1、模拟一个trim方法,去除字符串两端空格。
思路:
1、判断字符串第一个位置是否是空格,如果是继续向下判断,知道不是空格为止。结尾处判断空格也是如此。
2、当开始和结尾都判断到不是空格时,就是要获取的字符串。
//练习一,去除字符串两端空格。
public static String myTrim(String str)//空参数 这个空参数可以手动指定
{
int start =0,end = str.length()-1;
//定义start角标初始位置为0, end角标初始化是str长度的尾部并减1;因为减1包含头不包含尾
while(start<=end && str.charAt(start)==' ')
start++;
//循环(start角标小于等于end角标 并且str返回素引从(start角标)开始,元素中是否有空格
//返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值位于索引 0 处,第二个位于索引 1 处,依此类推,这类似于数组索引。
while(start<=end && str.charAt(end)==' ')
end--;
//循环(start角标小于等于end角标 并且str返回素引从(end角标)开始,元素中是否有空格
return str.substring(start,end+1);
//返回结果为 str新的String类型包含有头和尾部并1
}
2、将字符串中指定部分进行反转,“abcdefg”; "abfedcg"
思路:
1、曾经学习过对数组的元素进行反转。
2、将字符串变成数组,对数组反转。
3、将反转后的数组变成字符串。
4、只要将或反转的部分的开始和结束位置作为参数传递即可。
public static String reverseString(String s,int start ,int end)
{
//字符串变成数组。
char[] chs = s.toCharArray();
//反转数组;
reverse(chs,start,end);
//将数组变成字符串
return new String(chs);
}
public static String reverseString(String s)
{
//字符串变成数组。
char[] chs = s.toCharArray();
//反转数组;
//reverse(chs);
//将数组变成字符串
return new String(chs);
}
private static void reverse(char[] arr,int x, int y)//功能尽量细分
{
for(int start=x,end=y-1; start<end; start++,end--)
{
swap(arr,start,end);
}
}
private static void swap(char[] arr,int x,int y)
{
char temp=arr[x];
arr[x]= arr[y];
arr[y]=temp;
}
3、获取一个字符串在另一个字符串中出现的次数。
“adafasdfasdf”
思路:
1、定一个计数器。
2、获取as第一次出现的位置。
3、从第一次出现位置后剩余的字符串中继续获取as出现的位置。每获取一个就计数一次。
4、当获取不到时,计数完成。
public static int getSubCount(String str,String key)
{
int count =0;
int index =0;
while((index=str.indexOf(key))!=-1)
{
sop("str= "+str);
str=str.substring(index+key.length());
count++;
}
return count;
}
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
String str="abkkcdkkefkkskk";
sop("count"+getSubCount(str,"kk"));
}
4、获取两个字符串中最大相同字串。第一个动作:将断的那个串进行长度一次递减的字串打印。
"abcwerthelluyioj"
"cvhellobnm"
思路:
1、将短的那个字串按照长度递减的方式获取到。
2、将每获取到字串取长度中判断是否包含。去长串中判断是否包含,包含即找到
public static String getMaxSubString(String s1,String s2)
{
String max = "",min="";
max = (s1.length()>s2.length())?s1:s2;
min = (max==s1)?s2:s1;
sop("max="+max+"min"+min);
for(int x=0; x<min.length();x++)
{
for(int y=0,z=min.length()-x;z!=min.length()+1; y++,z++)
{
String temp =min.substring(y,z);
// sop(temp);
if(s1.contains(temp))//if(s1.indexOf(temp)!=-1)
return temp;
}
}
return " ";
}
public static void main(String[] args) {
String s1 = "abcwethelloyuiodef";
String s2 = "cvhellobnm";
sop(getMaxSubString(s2,s1));
}
public static void sop(String str)
{
System.out.println(str);
}
}