1.模拟一个trim方法,去除字符串两端的空格。
package com.string.exer;
public class StringDemo3 {
public static String trim(String str) {
if(str != null) {
int start = 0;
int end = str.length() - 1;
while(start < end && str.charAt(start) == ' ') {
start++;
}
while(start < end && str.charAt(end) == ' ') {
end--;
}
if(str.charAt(start) == ' ') {
return null;
}
return str.substring(start, end + 1);
}
return null;
}
public static void main(String[] args) {
String s1 = " hell o ";
System.out.println(trim(s1));
}
}
2.将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”
package com.string.exer;
public class StringTest4 {
public static String reverse(String str, int startIndex, int endIndex) {
if (str != null) {
char[] c = str.toCharArray();
for (int i = startIndex, j = endIndex; i < j; i++, j--) {
char temp = c[i];
c[i] = c[j];
c[j] = temp;
}
return new String(c);
}
return null;
}
public static String reverse2(String str, int startIndex, int endIndex) {
if(str != null) {
StringBuilder sb = new StringBuilder(str.length());
sb.append(str.substring(0, startIndex));
for(int i = endIndex; i > startIndex - 1; i--) {
sb.append(str.charAt(i));
}
sb.append(str.substring(endIndex + 1));
return sb.toString();
}
return null;
}
public static void main(String[] args) {
String s = "abcdefg";
String res = reverse2(s, 2, 5);
System.out.println(res);
}
}
3.获取一个字符串在另一个字符串中出现的次数。比如:获取“ ab”在“abkkcadkabkebfkabkskab” 中出现的次数
package com.string.exer;
public class StringDemo1 {
public static int getCount(String mainStr, String subStr) {
if (mainStr.length() > subStr.length()) {
int loc = 0;
int count = 0;
int startIndex = 0;
while ((loc = mainStr.indexOf(subStr, startIndex)) != -1) {
startIndex += loc + subStr.length();
count++;
}
return count;
}
return 0;
}
public static void main(String[] args) {
String s = "abkkcadkadkebfkaabkskab";
int res = getCount(s, "ab");
System.out.println(res);
}
}
4.获取两个字符串中最大相同子串。比如:str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm"提示:将短的那个串进行长度依次递减的子串与较长的串比较。
package com.string.exer;
import java.util.Arrays;
public class StringDemo2 {
public static String getMaxSameStr(String str1, String str2) {
String maxStr = (str1.length() >= str2.length()) ? str1 : str2;
String minStr = (str1.length() < str2.length()) ? str1 : str2;
int length = minStr.length();
for(int i = 0; i < length; i++) {
for(int x = 0, y = length - i; y <= length; x++, y++) {
String temp = minStr.substring(x, y);
if(maxStr.contains(temp)) {
return temp;
}
}
}
return null;
}
public static String[] getMaxSameStrArr(String str1, String str2) {
String maxStr = (str1.length() >= str2.length()) ? str1 : str2;
String minStr = (str1.length() < str2.length()) ? str1 : str2;
int length = minStr.length();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < length; i++) {
for(int x = 0, y = length - i; y <= length; x++, y++) {
String tempStr = minStr.substring(x, y);
if(maxStr.contains(tempStr)) {
sb.append(tempStr + ",");
}
}
if(sb.length() != 0) {
break;
}
}
String[] strArr = sb.toString().split(",");
return strArr;
}
public static void main(String[] args) {
String str1 = "abcwerthelloyuioabdef";
String str2 = "cvhellobnmabdef";
String[] res = getMaxSameStrArr(str1, str2);
System.out.println(Arrays.toString(res));
}
}