java機試題---2019

1.功能描述:數組的循環移位,

  輸入:{a,b,c},2

  輸出:{b,c,a}

  1. public static void main(String[] args) {
  2.         String[] sArr = getChildren(new String[] { "a", "b", "c", "A", "B", "C", "D", "E" }, 5);
  3.         for (String s : sArr) {
  4.             System.out.println(s);
  5.         }
  6.     }
  7.     public static String[] getChildren(String[] data, int index) {
  8.         for (int i = 0; i < index; i++) {
  9.             int j = data.length - 1;
  10.             String loay = data[j];
  11.             for (j = data.length - 1; j > 0; j--) {
  12.                 data[j] = data[j - 1];
  13.             }
  14.             data[0] = loay;
  15.         }
  16.         return data;
  17.     }

2.輸入一個字符,將字符轉換爲小寫,將其對應的ASCII值加5後,輸出結果。

   程序要求:若其值加5後的字符值大於'z',將其轉換成從a開始的字符。

   輸入:‘A’

   輸出:‘f’

  1.     public static void main(String[] args) {
  2.         String loay = "z";
  3.         int c = loay.charAt(0);
  4.         int num = c + 5;
  5.         if (num > 'Z') {
  6.             int a = 'a';
  7.             int z = 'z';
  8.             System.out.println((char) Character.toLowerCase(num + a - z - 1));
  9.         } else {
  10.             System.out.println((char) Character.toLowerCase(num));
  11.         }
  12.        }

3. 功能描述:查找一個字符串的子字符串集

    輸入:abab

    輸出:a b ab ba aba bab

  1. public static void main(String[] args) {
  2.         System.out.println(getChildren("ababc"));
  3.     }
  4.     public static List<String> getChildren(String data) {
  5.         Set<String> set = new TreeSet<String>();
  6.         for (int i = 1; i < data.length(); i++) {
  7.             for (int j = 0; j < data.length(); j++) {
  8.                 if (j + i <= data.length()) {
  9.                     set.add(data.substring(j, j + i));
  10.                 }
  11.             }
  12.         }
  13.         List<String> list = new ArrayList<String>();
  14.         list.addAll(set);
  15.         return list;
  16.     }

4.功能描述:判斷一個字符串中的"( )"是否配對

   輸入:if(a.equals(a))

   輸出:true

  1. public static void main(String[] args) {
  2.         Boolean bool = isBool("if()(a.equals(a)))");
  3.         System.out.println(bool);
  4.     }
  5.     public static Boolean isBool(String data) { 
  6.         String[] split =data.split("");
  7.         List<String> l = new ArrayList<String>();
  8.         for (int i = 0; i < split.length; i++) {
  9.             l.add(split[i]);
  10.         }
  11.         for (int i = 0; i < l.size(); i++) {
  12.             if (l.get(i).equals("(") || l.get(i).equals(")")) {
  13.             } else {
  14.                 l.remove(i);
  15.                 i--;
  16.             }
  17.         }
  18.         String k = l.get(0);
  19.         for (int i = 0; i < l.size(); i++) {
  20.             if (k.equals("(") && l.get(i).equals(")")) {
  21.                 l.remove(i);
  22.                 l.remove(0);
  23.                 i = 0;
  24.             }
  25.         }
  26.         if (l.size() == 0) {
  27.             return true;
  28.         }
  29.         return false;
  30.     }

5.刪除一個字符串裏出現次數最多的子字符串,如果有多個出現次數相同的並且出現次數最多則將多個全部刪除

比如abbccd

得到結果 ad

  1.     public static void main(String[] args) {
  2.         Map<String, Integer> m = new HashMap<>();
  3.         loay("abcceedwe", m);
  4.     }
  5.     public static String loay(String coay, Map<String, Integer> m) {
  6.         String[] apl = coay.split("");
  7.         List<String> l = new ArrayList<>();
  8.         for (int i = 0; i < apl.length; i++) {
  9.             l.add(apl[i]);
  10.             if (m.get(apl[i]) == null) {
  11.                 m.put(apl[i], 0);
  12.             }
  13.             if (m.get(apl[i]) != null) {
  14.                 m.put(apl[i], (m.get(apl[i]) + 1));
  15.             }
  16.         }
  17.         Integer is = Integer.MIN_VALUE;
  18.         StringBuilder sb = new StringBuilder();
  19.         for (Map.Entry<String, Integer> it : m.entrySet()) {
  20.             if (it.getValue() > is) {
  21.                 is = it.getValue();
  22.             }
  23.         }
  24.         for (Map.Entry<String, Integer> it : m.entrySet()) {
  25.             if (it.getValue().equals(is)) {
  26.                 sb.append(it.getKey());
  27.             }
  28.         }
  29.         java.lang.String[] a = sb.toString().split("");
  30.         for (int i = 0; i < a.length; i++) {
  31.             System.out.println(a[i]);
  32.             for (int j = l.size() - 1; j > 0; j--) {
  33.                 if (a[i].equals(l.get(j))) {
  34.                     l.remove(j);
  35.                 }
  36.             }
  37.         }
  38.         System.out.println(l);
  39.         return l.toString();
  40.     }

6.手動輸入一個存儲整數的數組,要求輸出數組裏面的2個最大值

  1. public static void main(String[] args) {
  2.         int len = 4;
  3.         int[] ary = new int[len];
  4.         Scanner sc = new Scanner(System.in);
  5.         for (int i = 0; i < ary.length; i++) {
  6.             System.out.print("請輸入數組第"+(i+1)+"個整數:");
  7.             ary[i] = sc.nextInt();
  8.         }
  9.         System.out.println("控制檯寫入的值" + Arrays.toString(ary));
  10.         for (int j = 0; j < ary.length - 1; j++) {
  11.             for (int k = j + 1; k > 0; k--) {
  12.                 if (ary[k] > ary[k - 1]) {
  13.                     int temp = ary[k - 1];
  14.                     ary[k - 1] = ary[k];
  15.                     ary[k] = temp;
  16.                 }
  17.             }
  18.         }
  19.         System.out.println("兩個最大值爲" + ary[0] + "*" + ary[1]);
  20.     }

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章