下面是一个Java初学算法的问题,实现方式很多,本文给出一个答案。问题如下:
设计一类StringProcess处理从控制台中输入的字符串,编写方法process接收字符串参数,方法process根据字符串中字符的个数为奇数或偶数做如下出现,如果输入字符串长度为偶数,从中间一分为二,前后两段分别倒序输出,例如输入12346790,输出两行数据分别为4321和0976;如果输入字符串长度为奇数,从中间一分为二,前后两段都包括最中间的字符,例如输入123456789,输出两行数据分别为54321和98765。
思路:
考虑如何折半(技术/偶数)
如何倒序。
public class MyFirstAnswer { /** * * @param args */ public static void main(String[] args) { System.out.println("请输入字符串:"); Scanner scanner = new Scanner(System.in); String next = scanner.next(); StringProcess.process(next); } } /** * */ class StringProcess{ /** * * @param str */ static void process(String str){ String str1=""; String str2=""; // 字符串截取 if (str.length() % 2 == 0){ str1 = str.substring(0,str.length()/2); str2 = str.substring(str.length()/2,str.length()); } else{ str1 = str.substring(0,str.length()/2 + 1); str2 = str.substring(str.length()/2,str.length()); } char[] chars = str1.toCharArray(); System.out.println("前半段是:"); /** * 这里可以使用StringBuffer 或StringBuilder */ for (int i = str1.length()-1; i >=0 ; i--) { System.out.print(chars[i]); } System.out.println("后半段是:"); /** * 这里可以使用StringBuffer 或StringBuilder */ chars = str2.toCharArray(); for (int i = str2.length()-1; i >=0 ; i--) { System.out.print(chars[i]); } } }