关于String的几道算法题
一
package com.yicurtain.CommonClass;
import org.junit.Test;
//将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
//思路:将“abcdefg”分解为“ab”+“cdef”+“g”,然后将“cdef”进行反转。
public class StringDemo {
public String reverse(String str,int start,int end){
StringBuilder builder = new StringBuilder(str.length());
builder.append(str.substring(0,start)) ;//ab
for (int i=end;i>=start;i--){
builder.append(str.charAt(i));//abfedc
}
builder.append(str.substring(end+1));//abfedcg
return builder.toString();
}
@Test
public void testreverse(){
String str="abcdefg";
String rev=reverse(str,2,5);
System.out.println(rev);
}
}
二
package com.yicurtain.CommonClass;
import org.junit.Test;
//获取一个字符串在另一个字符串中出现的次数。
//比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数
//思路:1.使用indexOf()方法,返回第一个"ab"后
// 2.截取第一次包含substr后 的 一串字符串,重复操作1
// 3.返回count
public class StringDemo1 {
public int getCount(String mainstr,String substr){
int mainstrLength=mainstr.length();
int substrLength=substr.length();
int count=0;
int index;
if (mainstrLength>=substrLength){
while ((index=mainstr.indexOf(substr))!=-1){
count++;
mainstr=mainstr.substring(index+substrLength);//截取第一次包含substr后 的 一串字符串
}
return count;
}else{
return 0;
}
}
@Test
public void testgetCount(){
String mainstr="abkkcadkabkebfkabkskab";
String substr="ab";
int count=getCount(mainstr,substr);
System.out.println(count);
}
}