2018年3月28日 星期三

[C_ST49-易] 字串取代

https://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=7009

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
String str=scn.nextLine();
String arr[]= {"hate","stupid","angry","dirty"},arr2[]= {"love","smart","happy","clean"};
for(int i=0;i<4;i++)
str = str.replaceAll(arr[i], arr2[i]);
System.out.println(str);
}
/*題目:[C_ST49-易] 字串取代
作者:1010
時間:西元 2018 年3 月 */
}

這題直接用JAVA的(replaceAll)將單字做取代替換就行了

[C_ST35-易] 抱怨值問題

https://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?a=1154

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
String str=scn.nextLine().replaceAll(" ", "");
String arr[]=str.split(",");
int count =0;
for(int i=0;i<arr.length;i++) {
for(int j=i-1;j>=0;j--) {
if(Integer.parseInt(arr[i])<Integer.parseInt(arr[j]))
count++;
}
}
System.out.println("Complaint ="+count);
}
/*題目:[C_ST35-易] 抱怨值問題
作者:1010
時間:西元 2018 年3 月 */
}

一開始寫完交出去結果回傳1,仔細看題目發現原來數字間除了逗號外還可能包含多個空白!
所以解婕辦法是先將所有的空白用(replaceAll)取代空字串,最後再用(split)來切逗號數字,這題是找目前數字之前有幾個比自己還大,所以利用O(n2)方式下去搜。

[C_ST38-中] 字數統計

https://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=2691

import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scn=new Scanner(System.in);
String str="";
while(scn.hasNext()) {
str+=scn.nextLine()+" ";
}
str=str.replaceAll("[,.;?!-]", "");
String arr[]=str.split(" ");
ArrayList<String> list = new ArrayList<String>();
ArrayList<Integer> count = new ArrayList<Integer>();
int j=0;
for(int i=0;i<arr.length;i++) {
if(arr[i].equals(""))
continue;
for(j=0;j<list.size();j++) {
if(list.get(j).toLowerCase().equals(arr[i].toLowerCase())) {
count.set(j, count.get(j)+1);
break;
}
}
if(j==list.size()) {
list.add(arr[i]);
count.add(1);
}
}
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i)+" : "+count.get(i));
}
}
/*題目:[C_ST38-中] 字數統計
作者:1010
時間:西元 2018 年3 月 */
}
題目有說道要去除標點符號,所以利用字串取代(replaceAll)將遇到的標點符號改為空字串,之後再使用字串切割(split)將字串切成陣列,最後在陣列走訪依序的計算每個單字的數量,比對單字是否存在時可以統一將單字轉成小寫(toLowerCase)