歡迎訪問 部落格新址 CC150
標籤: 刷題 編程 Java 8.1 1.1 字串互異
確定一個字串的所有字元是否全都不同。 方法一:逐字元比較的方法。時間複雜度: O(n2) O(n^2)。
import java.util.*;public class Different { public boolean checkDifferent(String iniString) { // write code here if (iniString.length()>256) return false; for (int i=0; i<iniString.length()-1; i++) { for (int j=i+1; j<iniString.length(); j++) { if (iniString.charAt(i) == iniString.charAt(j)) return false; } } return true; }} 方法二:
import java.util.*;public class Different { public boolean checkDifferent(String iniString) { // write code here if (iniString.length()>256) return false; boolean[] char_set = new boolean[256]; for (int i=0; i<iniString.length(); i++) { char val = iniString.charAt(i); if ((val < 0) ||(val > 255)) //檢查輸入 return false; if (char_set[val]) return false; char_set[val] = true; } return true; }}
1.2 原串翻轉
翻轉一個給定的字串(可以使用單個過程變數)。
使用Array實現
import java.util.*;public class Reverse { public String reverseString(String iniString) { // write code here char[] strArray = iniString.toCharArray(); int low = 0, high = iniString.length()-1; while (low < high) { char tmp = strArray[low]; strArray[low] = strArray[high]; strArray[high] = tmp; low++; high--; } String tmpString = new String(strArray); return tmpString; }}
使用StringBuilder
import java.util.*;public class Reverse { public String reverseString(String iniString) { // write code here StringBuilder sb = new StringBuilder(iniString); int low = 0, high = sb.length()-1; while (low < high) { char tmp = sb.charAt(low); sb.setCharAt(low, sb.charAt(high)); sb.setCharAt(high, tmp); low++; high--; } return sb.toString(); }}
1.3
確定其中一個字串的字元重新排列後,能否變成另一個字串。這裡規定大小寫為不同字元,且考慮字串重點空格。
import java.util.*;public class Same { public boolean checkSam(String stringA, String stringB) { // 最佳化 - 如果兩個字串長度不等,一定不可能 if (stringA.length() != stringB.length()) return false; return sortMy(stringA).equals(sortMy(stringB)); } public String sortMy(String s) { char[] as = s.toCharArray(); java.util.Arrays.sort(as); return new String(as); }}
1.4 空格替換
空格替換
import java.util.*;public class Replacement { public String replaceSpace(String iniString, int length) { return iniString.replaceAll(" ", "%20"); }}
1.5 基底字元串壓縮
基底字元串壓縮
import java.util.*;public class Zipper { public String zipString(String iniString) { // write code here String mystr = ""; char last = iniString.charAt(0); int count = 1; for (int i=1; i<iniString.length(); i++) { if (iniString.charAt(i)==last) { count++; } else { mystr += last + "" + count; last = iniString.charAt(i); count = 1; } } mystr += last + "" + count; if (mystr.length() > iniString.length()) return iniString; else { return mystr; } }}
1.6 d
1.4 d
1.3 d
1.4 d
1.3 d
1.4 d