題目連結
題意:
給定好幾行字
找出單字(只由連續字母組成)
以字典序輸出所有單字(以全小寫字母)
解法:
因為解答要求小寫
先將讀入的字串轉小寫
找出單字的作法頗多
我是先逐字判斷
不是字母就通通以空白代替
最後用 split 方法切開
然後一一存到 ArrayList
重複的要跳過
接著可以用 Collections 的 sort 方法排序
最後依序輸出即可
切的過程發現
可能有連續 2 個不是字母
所以會冒出一個空字串
反正也只會存一次(重複已跳過)
排序時也會排到最前面
輸出時 index 從1開始就可以避開
另外這題是讀到檔尾
測資也不是以行為單位輸出
想要用 Console 視窗測試可以試試:
在 while 迴圈讀到字串後
加下面幾行
記得丟 UVa 要槓掉XD
程式(Java):
題意:
給定好幾行字
找出單字(只由連續字母組成)
以字典序輸出所有單字(以全小寫字母)
解法:
因為解答要求小寫
先將讀入的字串轉小寫
找出單字的作法頗多
我是先逐字判斷
不是字母就通通以空白代替
最後用 split 方法切開
然後一一存到 ArrayList
重複的要跳過
接著可以用 Collections 的 sort 方法排序
最後依序輸出即可
切的過程發現
可能有連續 2 個不是字母
所以會冒出一個空字串
反正也只會存一次(重複已跳過)
排序時也會排到最前面
輸出時 index 從1開始就可以避開
另外這題是讀到檔尾
測資也不是以行為單位輸出
想要用 Console 視窗測試可以試試:
在 while 迴圈讀到字串後
加下面幾行
if (s.length()> 0)
if(s.charAt(0)=='2')
break;
測試時打個 2 就可以跳出迴圈了記得丟 UVa 要槓掉XD
程式(Java):
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.*; | |
public class Main { | |
public static void main(String args[]) { | |
Scanner sc = new Scanner(System.in); | |
ArrayList<String> word = new ArrayList<String>(); | |
while (sc.hasNext()) { | |
String s = sc.nextLine(); | |
if (s.length() > 0) { | |
s = s.toLowerCase(); | |
StringBuilder sb = new StringBuilder(); | |
for (int i = 0; i < s.length(); i++) { | |
if (s.charAt(i) >= 'a' && s.charAt(i) <= 'z') | |
sb.append(s.charAt(i)); | |
else | |
sb.append(' '); | |
} | |
s = sb.toString(); | |
String str[] = s.split(" "); | |
for (int i = 0; i < str.length; i++) { | |
if (!word.contains(str[i])) | |
word.add(str[i]); | |
} | |
} | |
} | |
Collections.sort(word); | |
for (int i = 1; i < word.size(); i++) | |
System.out.println(word.get(i)); | |
} | |
} |
留言
張貼留言