Java上機試題1

1. 有一串字符串String s = "ababab", 這個字符串能夠看作由3個"ab"構成,即n=3, L = "ab", s = nL. 如今要求編寫一段程序,使用單例模式,輸入任意字符串s,輸出nL. 如輸入: aaaaa 輸出 5a ,輸入: ababa 輸出: 1ababa

解題的有兩個關鍵,一個是單例模式如何實現(建立一個對象,讓構造函數爲 private,這樣該類就不會被實例化,再獲取惟一可用對象 ),一個是對spring對象的方法有一個比較清楚的瞭解,好比:java

Sting s = "aaaaaaa"; String[] strings = spring.split("a");

此時strings數組是空的(由於都是分隔符). 這一特色剛好能夠利用起來做爲判斷 L的依據.spring

  1. 先用單例模式編寫方法類apache

package com.ryan; ​ import org.apache.commons.lang3.StringUtils; ​ public class Tool { ​ //建立一個對象 private static Tool tool; //讓構造函數爲 private,這樣該類就不會被實例化 private Tool(){} //獲取惟一可用對象 public static Tool getTool() { if (tool == null) { tool = new Tool(); } return tool; } //編寫用來解題的方法 public static String compress(String s){ String result = ""; if (StringUtils.isBlank(s)){ result ="你輸入爲空!"; }else if (s.contains(" ")){ result ="請不要輸入空格!"; }else { int length = s.length(); System.out.println("length: "+length); int count = 0; ​ for (int i= 1;i<=length;i++){ String[] strings1 = s.split(s.substring(0,i)); if (strings1.length==0){ System.out.println("切分到"+i); count = i; break; } ​ } result = length/count + s.substring(0,count); } ​ return result; } }

 

  1. 再編寫主類數組

package com.ryan; public class Test1 { public static void main(String[] args) { String s = "aaaaaa"; String result = ""; Tool tool = Tool.getTool(); result = tool.compress(s); System.out.println(result); } }

大功告成.函數

相關文章
相關標籤/搜索