import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestTrim {
String s1 = " ajjjjjj123 ";//帶空格字元串
String s2 = "";//不帶空格字元串
/*
* 模拟trim()去掉帶空格字元串
* */
@Test
public void test() {
char[] chars = s1.toCharArray();
for (char c : chars) {
if (c != ' ') {
s2 += c;
}
}
System.out.println("字元串trim後" + s2);
}
/*
* 擷取字元串中最長的子字元串
* */
String str1 = "abcwenmrthelloyuiloodefccc";//字元串
String str2 = "cchelbnmyuiloefccc";//子字元串 18位
List<String> list;//存放str2所有可能的字元串情況
List<Integer> listLengths;//存放str2所有可能的字元串情況的長度
String[] strs = new String[str2.length()];// 存放字元每次從第一位遞減的字元串
String[] strsReverse = new String[str2.length()];// 存放字元串反轉後的元素
// 存放反轉後臨時字元串,每次遞減一位的字元串,18個字元串,得到每個元素從末尾遞減的每個元素
String strReverseTemp1;
// 對上面18個字元串再處理reverse回正向字元串
String strReverseTemp2;
@Test
public void test1() {
list = new ArrayList();
listLengths = new ArrayList();
for (int j = 0; j < str2.length(); j++) {
strs[j] = str2.substring(j);
StringBuilder stringBuilder = new StringBuilder(strs[j]);
StringBuilder reverse = stringBuilder.reverse();
strReverseTemp1 = reverse + "";
strsReverse[j] = strReverseTemp1;
for (int i = 0; i < strsReverse[j].length(); i++) {// 對反轉元素從第一位遞減後再反轉得到原正向字元串
StringBuilder sb1 = new StringBuilder(strsReverse[j].substring(i));
StringBuilder reverse1 = sb1.reverse();
strReverseTemp2 = reverse1 + "";
if (str1.contains(strReverseTemp2)) {// 周遊元素存入集合
list.add(strReverseTemp2);//存入str1主字元串所有包含str2的情況
}
}
}
for (int i = 0; i < list.size(); i++) {
int x = list.get(i).toString().length();//擷取str1主字元串所有包含str2的情況的str2的長度
listLengths.add(x);// 存放長度,下一步周遊字元串長度與最大長度比較
}
for (int i = 0; i < list.size(); i++) {
if ((Object) list.get(i).toString().length() == Collections.max(listLengths)) {// 比較
System.out.println("最長的字元串為:"+list.get(i));
}
}
}
}