題目一
分別輸入兩個非空字符串,第一個字符串可能包含tab鍵、回車
鍵,第二個字符串則不包含,求第一個字符串中(忽略tab鍵回車鍵)第二個字符串出現的個數,第一個字符串中連續有兩個字符串符合條件時都計入計數個數。
如:
輸入
第一個字符串:abb bd
第二個字符串:bb
輸出
2
代碼如下:
1 import java.util.*; 2 import java.util.regex.Matcher; 3 import java.util.regex.Pattern; 4 5 public class Main { 6 public static void main(String[] args) { 7 Scanner scanner = new Scanner(System.in); 8 while (scanner.hasNext()) { 9 String firstStr = scanner.nextLine(); 10 firstStr = evictBlankForStr(firstStr); 11 String secondStr = scanner.nextLine(); 12 if (firstStr.length() < secondStr.length()) { 13 System.out.println(0); 14 break; 15 } 16 int count = 0; 17 //計數 18 while (firstStr.length() >= secondStr.length()) { 19 String temp = firstStr.substring(0, secondStr.length()); 20 if (temp.equals(secondStr)) { 21 count++; 22 firstStr = firstStr.substring(1); 23 } else { 24 firstStr = firstStr.substring(1); 25 } 26 } 27 System.out.println(count); 28 } 29 } 30 31 public static String evictBlankForStr(String string){ 32 /* 33 * 去除第一個字符串中的空格和回車 34 * \n 回車(\u000a) 35 * \s 空格(\u0008) 36 * 37 * */ 38 Pattern p = Pattern.compile("\\s*|\n"); 39 Matcher m = p.matcher(string); 40 return m.replaceAll(""); 41 } 42 }
題目二
給出一個正整數,找到這個正整數中包含的最大遞減數。一個數字的遞減數是指相鄰的數位從大到小排列的數字。如95345323,遞減數有:953,95,53,53,532,32,那么最大的遞減數為953。
public static Integer getMaxDescreasingNum(int input) { //轉化為字符串 String orignNum = input + ""; List<Integer> list = new ArrayList<>(); //獲取所有的遞減數 for (int i = 0; i < orignNum.length(); i++) { StringBuffer temp = new StringBuffer(); char start = orignNum.charAt(i); temp.append(start); for (int j = i + 1; j < orignNum.length(); j++) { if (orignNum.charAt(j - 1) > orignNum.charAt(j)) { temp.append(orignNum.charAt(j)); list.add(Integer.parseInt(temp.toString())); } else { break; } } } //獲取最大遞減數 return Collections.max(list); }
我掛在最后一輪資格面試了,祝大家好運。