要求:給定字符串"1234"或者"12345",輸出以下序列。
output->
"1234","123","234","12","23","34","1","2","3","4"
"12345","1234","2345","123","234","345","12","23","34","45","1","2","3","4","5"
是否可以給出通用方法呢?
請注意符號問題!!!!!!!!!!
package com.java.interview.algorithm; /** * name: String_Output.java * * date:2014-8-8 20:00:00 * * function: output special string * * copyright: open * * @author wangxin * */ public class String_Output { public static void main(String[] args) { String str = "12345"; output_string(str); } /** * 輸出指定格式字符串 * * @param str */ private static void output_string(String str) { int len = str.length(); for (int i = 0; i < len; i++) { int count = 0; for (int j = 0; j <= i; j++) { System.out.print("\"" + str.substring(j, len - i + count++) + "\""); if (i != (len - 1) || j != i) { System.out.print(","); } } } } }
到了這裏你看到了什麼?
╮(╯▽╰)╭這個可比那個簡單多多了
擴展一下吧,我將要求改爲:
隨機給出一個整數字符串,長度爲len,且字符串裏面不能有重複的值。請給出如上面所示的輸出的做法。
示例:
隨機生成數字字符串"7902"
輸出 "0279","027","279","02","27","79","0","2","7","9"
只是增加了點難度而已
分析:①不能重複,字符串;②順序的輸出;
package com.java.interview.algorithm; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * name: String_Output2.java * * date:2014-8-8 20:30:43 * * function: output special string * * copyright: open * * @author wangxin * */ public class String_Output2 { public static void main(String[] args) { String random_String = random_String(4); System.out.println("隨機生成的數字型字符串爲: \"" + random_String +"\""); System.out.println("output->"); output_string(random_String); } private static void output_string(String str) { int len = str.length(); for (int i = 0; i < len; i++) { int count = 0; for (int j = 0; j <= i; j++) { System.out.print("\"" + str.substring(j, len - i + count++) + "\""); if (i != (len - 1) || j != i) { System.out.print(","); } } } } private static String random_String(int len) { if (len <= 0 || len >= 10) { System.out.println("輸入錯誤,應該在1-9之間"); return "fasle"; } int count = 0; Set<Integer> set = new HashSet<Integer>(len); do { set.add((int) (Math.random() * 9)); count = set.size(); } while (count < len); int temp[] = new int[len]; count = 0; for (Integer integer : set) { temp[count++] = integer; } Arrays.sort(temp, 0, len); String result = ""; for (int i : temp) { result += i; } return result; } }
輸出示例: 隨機生成的數字型字符串爲: "1678" output-> "1678","167","678","16","67","78","1","6","7","8"
未優化,歡迎優化後交流!