题目一
分别输入两个非空字符串,第一个字符串可能包含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); }
我挂在最后一轮资格面试了,祝大家好运。