/*
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
2,将一个字符串进行反转,将字符串中指定部分进行反转,"abcdefg";abfecg
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4只要将要反转的部分的开始和结束位置作为参数传递即可。
*/
/*class StringTest
{
public static String trimTest()
{
int a,b;
a=b=0;
String s1="";
String s ="abcdf";
for (int i=0;i<s.length() ;i++ )
{
char ch =s.charAt(i);
if (!(ch ==' '))
{
a=i;
break;
}
}
for (int i=s.length()-1;i>=0 ;i-- )
{
char ch =s.charAt(i);
if (!(ch==' '))
{
b=i;
break ;
}
}
if (a<=b)
{
s1=s.substring(a,b+1);
}
System.out.println(s1);
return s1;
}
public static void sop(String s)
{
System.out.println(s);
}
public static void main(String[] args)
{
String s =trimTest();
sop(s);
}
}
*/
class StringTest
{
public static void sop(String str)
{
System.out.println(str);
}
//练习二;将字符串反转。
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)
{
return reverseString(s,0,s.length());
}
public 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;
}
/*public static void reverseString(String s)
{
char [] chs =s.toCharArray();
sop(new String(reverse(chs)));
}
public static char[] reverse(char[] arr)
{
char [] chs = new char[arr.length];
for (int i =0,j=arr.length-1;i<arr.length&&j>=0 ;i++ )
{
chs[j--]=arr[i];
}
return chs;
}*/
public static void main(String [] args)
{
String s = "abcdefg";
sop(reverseString(s,2,6));
sop(reverseString(s));
//reverseString(s);
//String s =" abc d ";
//sop(myTrim(s));
}
//练习一,去除字符串两端空格。
public static String myTrim(String str)
{
int start = 0,end =str.length()-1;
while (start<=end && str.charAt(start)==' ')
{
start++;
}
while (start<=end && str.charAt(end)==' ')
{
end--;
}
return str.substring(start,end+1);
}
}
/*
/*4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。
"abcwerthelloyuiodef"
"cvhellobnm"
思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每次获取到的子串去长串中判断是否包含。
如果包含,已经找到!。
*/
class StringTest3
{
public static String getMaxSubString(String s1,String s2)
{
if (s1.length()<s2.length())
{
String temp = s1;
s1=s2;
s2=temp;
}
for (int i=0;i<s2.length() ;i++ )
{
for (int x=0,y=s2.length()-i;y<s2.length()+1 ;x++ ,y++)
{
String str =s2.substring(x,y);
if (s1.contains(str))
{
return str;
}
}
}
return "";
}
public static void main(String[] args)
{
//String s =getMaxSubString("cvhellobnm","abcwerthelloyuiodef");
//System.out.println(s);
}
}
3,获取一个字符串在另一个字符串出现的次数。
"abkkcdkkefkkskk"
思路:
1,定义一个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成。
*/
class StringTest2
{
public static void sop(String str)
{
System.out.println(str);
}
public static int getSubstring1(String str,String key)
{
int len =key.length();
int count=0;
int index=0;
while ((index=str.indexOf(key,index))!=-1)
{
index =index+len;
count++;
}
return count;
}
public static int getSubstring(String str,String key)
{
int count=0;
int index=0;
int len =key.length();
while ((index=str.indexOf(key))!=-1)
{
count++;
str=str.substring(index+len);
}
return count;
}
public static void main(String[] args)
{
String str ="abkkcdkkefkks";
//sop("count=="+str.split("kk").length);//不建议使用。
//sop("count="+getSubstring1(str,"kk"));
}
}