#日常练习
1,模拟一个trim方法,去除字符串两端的空格。
package String;
/*
*
1,模拟一个trim方法,去除字符串两端的空格。
思路:
1,判断字符串第一个位置是否是空格,如果是继续向下判断,直到不是空格为止。
结尾处判断空格也是如此。
2,当开始和结尾都判断到不是空格时,就是要获取的字符串。
*
*/
public class String_test01 {
public static void main(String[] args) {
String s1 = " ab fg ";
String_tools.sop("原字符串:",s1);
String_tools.sop("去除空格:",String_tools.myTrim(s1));
}
}
2,将一个字符串进行反转。将字符串中指定部分进行反转。
package String;
/*
* 2,将一个字符串进行反转。将字符串中指定部分进行反转,"abcdefg";abfedcg
思路:
1,曾经学习过对数组的元素进行反转。
2,将字符串变成数组,对数组反转。
3,将反转后的数组变成字符串。
4,只要将或反转的部分的开始和结束位置作为参数传递即可。
*
* */
public class String_test02 {
public static void main(String[] args) {
String s1 = "abcdefg";
String_tools.sop("原字符串:",s1);
String_tools.sop("整体翻转:",String_tools.reverseString(s1));
String_tools.sop("局部翻转:",String_tools.reverseString(s1,2,5));
}
}
3,获取一个字符串在另一个字符串中出现的次数。package String;
/*
3,获取一个字符串在另一个字符串中出现的次数。
"abkkcdkkefkkskk"
思路:
1,定义个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成。
*/
public class String_test03 {
public static void main(String[] args) {
String s1 = "abkkcdkkefkkskk";
String key = "kk";
String_tools.sop(s1+"串上有"+String_tools.getSubCount(s1,key)+"个"+key,"");
}
}
4,获取两个字符串中最大相同子串。
package String;
/*
3,获取一个字符串在另一个字符串中出现的次数。
"abkkcdkkefkkskk"
思路:
1,定义个计数器。
2,获取kk第一次出现的位置。
3,从第一次出现位置后剩余的字符串中继续获取kk出现的位置。
每获取一次就计数一次。
4,当获取不到时,计数完成。
*/
public class String_test03 {
public static void main(String[] args) {
String s1 = "abkkcdkkefkkskk";
String key = "kk";
String_tools.sop(s1+"串上有"+String_tools.getSubCount(s1,key)+"个"+key,"");
}
}
package String;
/*
4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。
"abcwerthelloyuiodef"
"cvhellobnm"
思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每获取到的子串去长串中判断是否包含,
如果包含,已经找到!。
*/
public class String_test04 {
public static void main(String[] args) {
String s1 = "abcwerthelloyuiodef";
String s2 = "cvhellobnm";
String_tools.sop("最大重复子串:",String_tools.getMaxSubString(s1,s2));
}
}
以上代码需要用到的其他方法:package String;
public class String_tools{
//公共方法
public static void sop(String s , Object obj) {
System.out.println(s + obj);
}
/*******************************************************************************/
//练习4
public static String getMaxSubString(String s1,String s2) {
String longString = "";
String shortString = "";
longString = (s1.length()>s2.length())?s1:s2;
shortString = (s1.length()<s2.length())?s1:s2;
for(int x = 0;x <shortString.length();x++) {
for(int y = 0,z = shortString.length()-x;z != shortString.length()+1;y++,z++) {
String temp = shortString.substring(y, z);
if(longString.contains(temp)) {
return temp;
}
}
}
return "";
}
/*******************************************************************************/
//练习3
public static int getSubCount(String s1,String key)
{
int count = 0;
int index = 0;
//找到时.index返回角标,更新index值,并+上目标串的长度用于定位到找到位置的后面,没找到时结束。
for(;(index = s1.indexOf(key,index)) != -1;index = index + key.length()) {
count++;
}
return count;
}
/*******************************************************************************/
//练习2
//指定位置翻转
public static String reverseString(String str , int star , int end) {
char [] arr = str.toCharArray();
reverseCharArray(arr,star,end);
return (new String(arr));
}
//整体翻转
public static String reverseString(String str) {
char [] arr = str.toCharArray();
reverseCharArray(arr,0,arr.length-1);
return (new String(arr));
}
public static void reverseCharArray(char[] arr , int star , int end) {
for(;star < end;star++,end--) {
char temp = arr[star];
arr[star] = arr[end];
arr[end] = temp;
}
}
/*******************************************************************************/
//练习1
public static String myTrim(String str) {
int star = 0 ;
int end = str.length()-1;
while(star <= end && str.charAt(star) == ' ') {
star++;
}
while(star <= end && str.charAt(end) == ' ') {
end--;
}
return (str.substring(star, end+1));
}
}
package String;
public class String_tools{
//公共方法
public static void sop(String s , Object obj) {
System.out.println(s + obj);
}
/*******************************************************************************/
//练习4
public static String getMaxSubString(String s1,String s2) {
String longString = "";
String shortString = "";
longString = (s1.length()>s2.length())?s1:s2;
shortString = (s1.length()<s2.length())?s1:s2;
for(int x = 0;x <shortString.length();x++) {
for(int y = 0,z = shortString.length()-x;z != shortString.length()+1;y++,z++) {
String temp = shortString.substring(y, z);
if(longString.contains(temp)) {
return temp;
}
}
}
return "";
}
/*******************************************************************************/
//练习3
public static int getSubCount(String s1,String key)
{
int count = 0;
int index = 0;
//找到时.index返回角标,更新index值,并+上目标串的长度用于定位到找到位置的后面,没找到时结束。
for(;(index = s1.indexOf(key,index)) != -1;index = index + key.length()) {
count++;
}
return count;
}
/*******************************************************************************/
//练习2
//指定位置翻转
public static String reverseString(String str , int star , int end) {
char [] arr = str.toCharArray();
reverseCharArray(arr,star,end);
return (new String(arr));
}
//整体翻转
public static String reverseString(String str) {
char [] arr = str.toCharArray();
reverseCharArray(arr,0,arr.length-1);
return (new String(arr));
}
public static void reverseCharArray(char[] arr , int star , int end) {
for(;star < end;star++,end--) {
char temp = arr[star];
arr[star] = arr[end];
arr[end] = temp;
}
}
/*******************************************************************************/
//练习1
public static String myTrim(String str) {
int star = 0 ;
int end = str.length()-1;
while(star <= end && str.charAt(star) == ' ') {
star++;
}
while(star <= end && str.charAt(end) == ' ') {
end--;
}
return (str.substring(star, end+1));
}
}