概述
1.模拟一个trim方法,去除字符串两端的空格。
public class TrimTest {
public static void main(String[] args) {
String s1="
a bc
";
int start=0;
int end=s1.length()-1;
if(s1!=null){
while(start<end && s1.charAt(start)==' '){
start++;
}
while(start<end && s1.charAt(end)==' '){
end--;
}
}
String s2 = s1.substring(start, end+1);
System.out.println(s1);
System.out.println(s2);
}
}
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如abcdefg反转为abfedcg。
实现方式一:转换为char[]
public class ReverseTest {
public static void main(String[] args) {
String s="abcdefg";
int start=2;
int end=s.length()-1;
ReverseTest test=new ReverseTest();
String reverse = test.reverse(s, start, end);
System.out.println(s);
System.out.println(reverse);
}
public String reverse(String s,int start,int end){
if(s!=null){
char[] chars = s.toCharArray();
for(int i=start,j=end;i<j;i++,j--){
char temp=chars[i];
chars[i]=chars[j];
chars[j]=temp;
}
String s1 = new String(chars);
return s1;
}
return null;
}
}
实现方式二: 使用String的拼接
//使用String的拼接
public String reverse2(String s,int start,int end){
if(s!=null){
//第1部分
String reverseStr = s.substring(0, start);
//第2部分
for(int i=end;i>=start;i--){
reverseStr+=s.charAt(i);
}
//第3部分
reverseStr+=s.substring(end+1);
return reverseStr;
}
return null;
}
@Test
public void test1(){
String s="abcdefg";
String s1 = reverse2(s, 2, 5);
System.out.println(s1);
}
实现方式三: 使用StringBuffer/StringBuilder替换String
//方式三:使用StringBuffer/StringBuilder替换String
public String reverse3(String s,int start,int end){
if(s!=null){
StringBuilder builder = new StringBuilder(s.length());
//第1部分
builder.append(s.substring(0,start));
//第2部分
for(int i=end;i>=start;i--){
builder.append(s.charAt(i));
}
//第3部分
builder.append(s.substring(end+1));
return builder.toString();
}
return null;
}
@Test
public void test2(){
String s="abcdefg";
String s1 = reverse3(s, 2, 5);
System.out.println(s1);
}
3.获取一个字符串在另一个字符串中出现的次数。比如:获取"ab" 在 "abkkcadkabkebfkabkskab " 中出现的次数
public class GetCountTest {
public int GetCount(String mainStr,String subStr){
if(mainStr.length()>=subStr.length()){
int count=0;
int index=0;
//方式一:
//
while((index=mainStr.indexOf(subStr)) !=-1){
//
count++;
//
mainStr=mainStr.substring(index+subStr.length());
//
}
//方式二:
// int indexOf(String str, int fromIndex):
// 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
while ((index=mainStr.indexOf(subStr,index))!=-1){
count++;
index+=subStr.length();
}
return count;
}
return 0;
}
@Test
public void test1(){
String s="abkkcadkabkebfkabkskab";
String test="ab";
int i = GetCount(s, test);
System.out.println(i);
}
4.获取两个字符串中最大相同子串。比如:str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
//情况一:两个字符串中只有一个最大相同子串
public String compare(String s1,String s2){
if(s1!=null && s2!=null){
String maxStr=(s1.length()>=s2.length())? s1:s2;
String minStr=(s1.length()<s2.length())? s1:s2;
int length=minStr.length();
for(int i=0;i<length;i++){
for(int x=0,y=length-i;y<=length;x++,y++){
String substring = minStr.substring(x, y);
if(maxStr.contains(substring)){
return substring;
}
}
}
}
return null;
}
//情况二:两个字符串中有多个最大相同子串
public String[] compare1(String s1,String s2){
if(s1!=null && s2!=null){
StringBuffer sBuffer=new StringBuffer();
String maxStr=(s1.length()>=s2.length())? s1:s2;
String minStr=(s1.length()<s2.length())? s1:s2;
int length=minStr.length();
for(int i=0;i<length;i++){
for(int x=0,y=length-i;y<=length;x++,y++){
String substring = minStr.substring(x, y);
if(maxStr.contains(substring)){
sBuffer.append(substring+",");
}
}
if(sBuffer.length()!=0){
break;
}
}
String[] split = sBuffer.toString().replaceAll(",$", "").split("\,");
return split;
}
return null;
}
@Test
public void test(){
String s1="abcwerthelloyuiodefabecd";
String s2="cvhellobnmabecd";
String[] result = compare1(s1, s2);
System.out.println(Arrays.toString(result));
}
5.对字符串中字符 进行自然顺序排序 。
提示:
1)字符串变成字符数组
2)对数组排序,选择,冒泡 Arrays.sort
3)将排序后的数组变成字符串
public String Sort(String s){
if(s!=null){
char[] chars = s.toCharArray();
for(int i=0;i<chars.length;i++){
for(int j=0;j<chars.length-i-1;j++){
if(chars[j]>chars[j+1]){
char temp=chars[j];
chars[j]=chars[j+1];
chars[j+1]=temp;
}
}
}
//Arrays.sort(chars);
return new String(chars);
}
return null;
}
@Test
public void test(){
String s1="abcwerthelloyuiodef";
String sort = Sort(s1);
System.out.println(s1);
System.out.println(sort);
}
最后
以上就是苹果香菇为你收集整理的String相关的常见算法题目的全部内容,希望文章能够帮你解决String相关的常见算法题目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复