package it.drenched.day13;
public class StringTest {
public static void main(String[] args) {
String s="abadccfcc ";
String s1=myTrim(s);
print(s1);
String s2=reverseString(s);
print(s2);
int count = getSubCount(s,"cc");
print(count);
String s3="asadsadfsfdsdf";
String s4 ="sad";
print(getMaxSubString(s3,s4));
}
// 练习 一 :去除字符串两端空格
public static String myTrim(String s)
{
System.out.println(s);
int start =0,end =s.length()-1;
while(start<=end && s.charAt(start)==' ')
start ++;
while(start<=end && s.charAt(end)==' ')
end--;
return s.substring(start, end +1);
}
// 练习 二:将字符串反串
// 思路:
// 1.对字符串变成数组
// 2.对数组反转
// 3.将数组变成字符串
public static String reverseString(String s)
{
char[] arr = s.toCharArray();
reverse(arr);
return new String(arr);
}
private static void reverse(char[] arr) {
for(int start=0, end =arr.length-1;start<end;start++,end--)
{
swap(arr,start,end);
}
}
private static void swap(char[] arr, int start, int end) {
char temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
/*
* 练习三 :获取一个字符串在另一个字符串中出现的次数
* "abbabbsadsadasdaassad"
* 思路:
* 1.定义一个计数器
* 2.获取bb第一次出现的位置
* 3.从第一次出现位置后剩余的字符串中获取bb出现的位置
* 每获取依次就计数一次.
* 4.当获取不到时,计数完成
*/
public static int getSubCount(String str,String key)
{
int count =0;
int index =0;
while((index =str.indexOf(key))!=-1)
{
str=str.substring(index+key.length());
count ++;
}
return count;
}
public static int getSubCount_2(String str,String key)
{
int count =0;
int index= 0;
while((index = str.indexOf(key,index))!=-1)
{
index = index + key.length();
count++;
}
return count;
}
/*
* 练习四:获取两个字符串中两个相同的最大子串
* 第一个动作:将短的那个串进行长度依次递减的子串打印
*
* 思路:
* 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;
for(int i=0;i<min.length();i++)
{
for(int j=0,z =min.length()-i;z!=min.length()+1;j++,z++)
{
String temp = min.substring(j, z);
// print(temp);
if(max.contains(temp))
return temp;
}
}
return "";
}
public static void print(Object obj)
{
System.out.println(obj);
}
}