下面要给大家带来的就是和java基础string算法有关的内容,具体的包括了五个小练习,一起来看看吧。
五个练习题目要求:
/** 1.模拟一个trim方法,去除字符串两端的空格。 2.将一个字符串进行反转。将字符串中指定部分进行反转。比如将“abcdefg”反转为”abfedcg” */ /** 3.获取一个字符串在另一个字符串中出现的次数。 比如:获取“ ab”在 “abkkcadkabkebfkabkskab”中出现的次数. 4.获取两个字符串中最大相同子串。比如: str1 = "abcwerthelloyuiodef“;str2 = "cvhellobnm" 提示:将短的那个串进行长度依次递减的子串与较长 的串比较。 5.对字符串中字符进行自然顺序排序。 提示: 1)字符串变成字符数组。 2)对数组排序,选择,冒泡,Arrays.sort(); 3)将排序后的数组变成字符串。 * */
算法代码:
import java.lang.reflect.Array; import java.util.Arrays; public class Test_String { public static void main(String[] args) { //1. myTrim(" 12 123 234 "); myTrim("12 123 234 "); myTrim("12 123 234"); myTrim(" "); //2. RevString("123456", 1, 4); RevString("123456", 3, 5); RevString("123456", 5, 5); //3. CountSubStr("ab", "abkkcadkabkebfkabkskab"); CountSubStr("abkkcadkabkebfkabkskab", "abkkbkebfkabkskab"); CountSubStr("abkkcadkabkebfkabkskab", "abkkcadkabkebfkabkskab"); //4. CountLongestSubStr("abkkcadkabkebfkabkskab", "abkkbkebfkabkskab"); CountLongestSubStr("4564698719", "145764987134874364"); //5. SortStr("46541324asdvdsd"); SortStr("465asdAA41324asdvdsd"); } //1.模拟一个trim方法,去除字符串两端的空格。 public static void myTrim(String str) { int start = 0, endd = str.length() - 1; char[] s = str.toCharArray(); for (int i = 0; i < endd; i++) { if (s[i] == ' ') start++; else break; } for (int i = endd; i >= start; i--) { if (s[i] == ' ') endd--; else break; } String s2 = new String(s, start, endd - start + 1); System.out.println("myTrim() :[" + str + "] -->[" + s2 + "]"); } //2.将一个字符串进行反转。将字符串中指定下标的部分进行反转 public static void RevString(String str, int st, int ed) { char[] s = str.toCharArray(); int len = str.length(); if (st < 0 || ed >= len || st > ed) { System.out.println("Range Error!"); return; } for (int i = st, j = ed; i < j; i++, j--) { char temp = s[i]; s[i] = s[j]; s[j] = temp; } String ss = new String(s); System.out.println("RevString() " + str + "--指定下标反转-->" + ss); } //3.获取一个字符串s1在另一个字符串s2中出现的次数。 public static int CountSubStr(String str1, String str2) { char[] s1 = str1.toCharArray(); int len1 = str1.length(); char[] s2 = str2.toCharArray(); int len2 = str2.length(); //枚举母串的起点和终点的位置,进行裸匹配 int cnt = 0; for (int i = 0; i < s2.length; i++) { int j = i + len1 - 1; if (j >= len2) { break; } int flag = 0; for (int k = i; flag == 0 && k <= j; k++) { if (s1[k - i] != s2[k]) flag = 1; } if (flag == 0) { cnt++; // System.out.println("****"+i+" "+j); } } System.out.println("CountSubStr() " + str1 + " in " + str2 + " counting " + cnt + " times!"); return cnt; } public static int CountSubStr2(String str1, String str2) { //为第四题做准备,只是删去了输出! char[] s1 = str1.toCharArray(); int len1 = str1.length(); char[] s2 = str2.toCharArray(); int len2 = str2.length(); //枚举母串的起点和终点的位置,进行裸匹配 int cnt = 0; for (int i = 0; i < s2.length; i++) { int j = i + len1 - 1; if (j >= len2) { break; } int flag = 0; for (int k = i; flag == 0 && k <= j; k++) { if (s1[k - i] != s2[k]) flag = 1; } if (flag == 0) { cnt++; // System.out.println("****"+i+" "+j); } } return cnt; } //4.获取两个字符串中最大相同子串 public static void CountLongestSubStr(String sonstr, String str) { char[] s1 = sonstr.toCharArray(); char[] s2 = str.toCharArray(); int ans_len = 0; ///解决思路:直接枚举子串的所有子串,然后一一跟母串进行匹配 String ansString = ""; for (int i = 0; i < s1.length; i++) { for (int j = i + 1; j < s1.length; j++) { int num = CountSubStr2(new String(s1, i, j - i + 1), str); if (num > 0 && ans_len < (j - i + 1)) { ans_len = j - i + 1; ansString = new String(s1, i, j - i + 1); } } } System.out.println("CountLongestSubStr() " + sonstr + " & " + str + " is [" + ansString + "],len is " + ans_len); } //5.字符串变成字符数组。2)对数组排序 public static void SortStr(String str) { char s[] = str.toCharArray(); Arrays.sort(s); System.out.println("SortStr() " + str + "-->" + "[" + new String(s) + "]"); } }
输出结果:
myTrim(): [12 123 234]-- > [12 123 234] myTrim(): [12 123 234]-- > [12 123 234] myTrim(): [12 123 234]-- > [12 123 234] myTrim(): []-- > [] RevString() 123456--指定下标反转-- > 154326 RevString() 123456--指定下标反转-- > 123654 RevString() 123456--指定下标反转-- > 123456 CountSubStr() ab in abkkcadkabkebfkabkskab counting 4 times! CountSubStr() abkkcadkabkebfkabkskab in abkkbkebfkabkskab counting 0 times! CountSubStr() abkkcadkabkebfkabkskab in abkkcadkabkebfkabkskab counting 1 times! CountLongestSubStr() abkkcadkabkebfkabkskab & abkkbkebfkabkskab is[bkebfkabkskab], len is 13 CountLongestSubStr() 4564698719 & 145764987134874364 is[9871], len is 4 SortStr() 46541324 asdvdsd-- > [12344456 adddssv] SortStr() 465 asdAA41324asdvdsd-- > [12344456 AAaaddddsssv]
更多java基础知识,欢迎大家继续的关注奇Q工具网来进行了解哦,以上内容源于网络,仅供参考,希望可以对大家有所帮助。
推荐阅读: