/** *1、 輸入一個(gè)字符串,將其各個(gè)字符對(duì)應(yīng)的ASCII值加5后,輸出結(jié)果。 * 要求:該字符串只包含小寫(xiě)字母,若其值加5后的字符值大于'z',將其轉(zhuǎn)換成從a開(kāi)始的字符 */ public class Demo1 { public static void main(String[] args) { Demo1 test = new Demo1(); String data = ""; String regex = "^[a-z]*$"; if (data.matches(regex)) { System.out.println(test.getString(data)); } else { System.out.println("輸入的字符串不合法"); } } public char[] getString(String data) { char[] arr = data.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] + 5 > 'z') { arr[i] = (char) (arr[i] - 21); } else { arr[i] = (char) (arr[i] + 5); } } return arr; } } /** *2、求一個(gè)整形數(shù)組中元素的平均值,并統(tǒng)計(jì)其中大于和小于此平均值的元素的個(gè)數(shù) 要求:輸入:整形數(shù)組中的元素個(gè)數(shù)及各個(gè)元素 輸出:整型數(shù)組中元素的平均值,大于和小于此平均值的元素個(gè)數(shù) */ public class Demo2 { public static void main(String[] args) { int[] arr ={1,100}; new Demo2().getavage(arr, 2); } public void getavage(int[] arr, int num){ if(num==0){ System.out.println("數(shù)組為空"); }else{ double avage = 0.0; int sum = 0; int count1=0; int count2=0; for(int i=0;i<arr.length;i++){ sum += arr[i]; } avage = (double)sum/num; for(int j =0;j<num;j++){ if(arr[j]>avage){ count1++; }else{ count2++; } } System.out.println("平均值:"+avage); System.out.println("大于平均值的元素個(gè)數(shù):"+count1); System.out.println("小于平均值的元素個(gè)數(shù):"+count2); } } } 3、手動(dòng)輸入一個(gè)存儲(chǔ)整數(shù)的數(shù)組,要求輸出數(shù)組里面的2個(gè)最大值 例子:輸入:1、2、5、9、84、3、2 輸出:84、9 public class Demo3 { public static void main(String[] args) { Demo3 test = new Demo3(); int[] arr = {1}; test.getMaxValue(arr); } public void getMaxValue(int[] arr){ int temp=0; if(arr.length<1){ System.out.println("數(shù)組元素個(gè)數(shù)至少為2"); } else{ for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[i]>arr[i+1]){ temp = arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } } System.out.print(arr[arr.length-1]+"、"+arr[arr.length-2]); } } } 4、回文數(shù)字判斷。題目描述:有這樣一類(lèi)數(shù)字,他們順著看和倒著看是相同的數(shù)。 如:121,656,2332等。這樣的數(shù)字稱(chēng)為回文數(shù)字。 編寫(xiě)一個(gè)函數(shù),判斷某數(shù)字是否是回文數(shù)字。 public String isPalidrome(String strIn) 輸入:strIn:整數(shù),以字符串表示 返回:true:是回文數(shù)字 false:不是回文數(shù)字 只需完成該函數(shù)功能算法,中間不需要任何IO的輸入和輸出 示例:輸入:strIn="121",返回:true public class Demo4 { public boolean isPalindrome(String str) { char[] arr = str.toCharArray(); int len = arr.length; boolean b = false; for(int i = 0; i <= len/2; i++ ) { if(arr[i] != arr[len-i-1]) { break; } b=true; } return b; } public static void main(String[] args) { String str = "223322"; if(new Demo4().isPalindrome(str) ) { System.out.println("該字符串是回文字符串!"); } else { System.out.println("該字符串不是回文字符串!"); } } } 6、手動(dòng)輸入一個(gè)字符串,僅限小寫(xiě)字母,統(tǒng)計(jì)并輸出每個(gè)字符在字符串中出現(xiàn)的次數(shù),并輸出。提示可以用map 例子:輸入:aaabbbccc 輸出:a 3 b 3 c 3 public class Demo6 { public static void main(String[] args) { Demo6 test = new Demo6(); String data = "kjdfldfsaf"; String regex = "^[a-z]*$"; if(data.matches(regex)){ Map<Character, Integer> map = test.getCharAount(data); for(Map.Entry<Character, Integer> entry:map.entrySet()){ System.out.println(entry.getKey()+" "+entry.getValue()); } }else{ System.out.println("輸入的字符串不合法"); } } public Map<Character,Integer> getCharAount(String data){ Map<Character,Integer> tree = new TreeMap<Character,Integer>(); char[] arr = data.toCharArray(); for(int i=0;i<arr.length;i++){ if(!tree.containsKey(arr[i])){ tree.put(arr[i], new Integer(1)); }else{ Integer in = tree.get(arr[i])+1; tree.put(arr[i], in); } } return tree; } } 7、要求實(shí)現(xiàn)方法(這是在網(wǎng)上看的一個(gè)答案。沒(méi)有處理負(fù)數(shù)相加。字符串相加竟然也能通過(guò)?。?/div> public class Demo7_bignum { public String addTwoBigNumber(String s1,String s2){ //大數(shù)相加,注意處理異常 String result=""; //保證s1是最長(zhǎng)的 if(s1.length()<s2.length()){ String temStr = s2; s2 = s1; s1 = temStr; } int sum =0; int flag = 0;//進(jìn)位 int deleW=s1.length()-s2.length(); //從個(gè)位開(kāi)始相加 for(int i=s1.length()-1;i>=0;i--){ if((i-deleW)>=0){ sum = (s1.charAt(i)-'0')+(s2.charAt(i-deleW)-'0')+flag; }else{ sum = (s1.charAt(i)-'0')+flag; } //每次相加后把進(jìn)位置0 flag = 0; //如果和大于等于10,再將進(jìn)位置為1 if(sum>9){ sum-=10; flag = 1; } result = sum+result; } //如果最高位有進(jìn)位 if(flag == 1){ result = "1"+result; flag = 0; } return result; } public static void main(String[] args) { Demo7_bignum test = new Demo7_bignum(); String str = test.addTwoBigNumber("","0"); System.out.println(str); } } 7.1、大數(shù)相加 import java.math.BigDecimal; public class Demo7_1 { public String addTwoBigNumber(String s1,String s2){ //大數(shù)相加,注意處理異常 String regex = "^\\-?[1-9][0-9]*\\.?[0-9]*$"; if(!s1.matches(regex)||!s2.matches(regex)){ return "輸入的值不合法"; } BigDecimal bd1 = new BigDecimal(s1); BigDecimal bd2 = new BigDecimal(s2); String result = bd1.add(bd2).toString(); return result; } public static void main(String[] args) { Demo7_1 test = new Demo7_1(); String r1 = test.addTwoBigNumber("123456789","987654321"); String r2 = test.addTwoBigNumber("-10.5", "5"); System.out.println(r1); System.out.println(r2); } } /** * 8、比較二維數(shù)組列最小值,組成一個(gè)新數(shù)組返回。 * (實(shí)現(xiàn)核心算法,不需要使用IO) 輸入:{{5,6,1,16},{7,3,9}} 輸出:intArrs * ={1,3} */ public class Demo8 { public static void main(String args[]) { // 寫(xiě)測(cè)試方法 int[][] a = { { 5, 6, 1, 16 }, { 7, 3, 9 }, { 2, 4, 56 } }; int[] ss = getColMin(a); for (int i = 0; i < ss.length; i++) { System.out.print(ss[i] + " "); } } public static int[] getColMin(int a[][]) { int[] res = new int[a.length]; for (int i = 0; i < a.length; i++) { int[] s = a[i]; Arrays.sort(s); res[i] = s[0]; } return res; } } /** * 10、功能描述:將字符串中的字母全部替換成字母的下一個(gè)字母, 要是最后一位是z或Z則替換為a或A。 * 輸入:aBxyZ * 輸出:bCyzA */ public class Demo10 { public static void main(String[] args) { String data = ""; System.out.println(new Demo10().nextString(data)); } public String nextString(String data) { char[] arr = data.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] >= 'a' && arr[i] <= 'z' || arr[i] >= 'A' && arr[i] <= 'Z') { if (arr[i] == 'z' || arr[i] == 'Z') { arr[i] = (char) (arr[i] - 25); } else if ((arr[i] >= 'a' && arr[i] < 'z') || (arr[i] >= 'A' && arr[i] < 'Z')) { arr[i] = (char) (arr[i] + 1); } } } String res = String.valueOf(arr); return res; } } /** * 11、判斷一個(gè)字符串中是否只含有相同的子字符串(子字符串>=2)。 輸入:abab 返回:true 輸入:abcd 返回:false */ public class Demo11 { public static void main(String[] args) { String data = "ababab"; boolean flag = new Demo11().checkString(data); System.out.println(flag); } public boolean checkString(String data) { boolean flag = false; if (data.length() == 2 || data.length() == 0 || data.length() % 2 != 0) { return flag; } int subStrMaxLen = data.length() / 2; for (int i = 2; i <= subStrMaxLen; i++) { int subStrNumber = data.length() / i; String[] temp = new String[subStrNumber]; int begin = 0; int end = i; for (int j = 0; j < subStrNumber; j++) { temp[j] = data.substring(begin, end); begin += i; end += i; } for (int k = 0; k < subStrNumber - 1; k++) { if (temp[k].equals(temp[k + 1])) { flag = true; } else { flag = false; break; } } if (flag == true) { break; } } return flag; } } |
|
來(lái)自: 昵稱(chēng)12194942 > 《JavaSe》