JAVA5.0でGO!!
「おれSTRUTS使ってWEBアプリつくれる」
とかそんなのはできて当たり前のことである。
部品を決まったとうりに組み立てていくだけだからである。
けど、ここでは部品をつかって自分の頭で考えて作っていかなければならない。
自信があるなら実際にやってみよう。そんなに時間はかからないはずだ。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
難易度 超簡単 目標時間 15分
あなたには3つの文字列の配列があたえられます。
一つ目の配列はユーザー名の配列。
{"usrA","usrB","usrC"}
2つ目の配列はそのユーザーが扱うことのできるデータの文字列の入った配列。扱うことの
できるデータが2個以上ある場合はデータがスペースで区切られています。
{"data1 data3","data2 data4","data3 data5 data6"}
3つ目の配列はデータの配列が入っています。
{"data1"}
あなたは3つ目の配列のなかにあるデータをすべて扱うことのできるユーザを探さなければなりません。
上の例の場合: usrA
クラス名:
ReportAccess
メソッド名:
whoCanSee
引数タイプ:
String[], String[], String[]
リターン:
String[]
メソッド:
String[] whoCanSee(String[] userNames, String[] allowedData, String[] reportData)
定義
1.ユーザーの名前は1から50個までの文字で構成される。
2.ユーザーの名前は1から50、もしくは 'a'から'z'の文字で構成される。
3.allowDataにはユーザーの名前と同じ文字列が含まれるかもしれない。
4.allowDataは'a'から'z'や' 'で構成される文字列である。
5.reportDataは1から50、もしくは'a'から'z'の文字で構成される。
例1)
{"joe", "nick", "ted"}
{"clients products", "products orders", "clients orders"}
{"clients", "products"}
Returns: {"joe" }
例2)
{"kathy", "john", "dan", "steve", "cheryl", "tony"}
{"users data", "data orders", "users permissions", "system users controls", "default", "admin users"}
{"users"}
Returns: {"dan", "kathy", "steve", "tony" }
例3)
{"jim", "scott", "barbara"}
{"users order products", "products shipping", "tracking products orders"}
{"admin"}
Returns: { }
注)この問題はTOPCODER INCが出題していたものをおれが適当に訳したものです。
著作権はTOPCODER INCにあります。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
今日はGENERICをつかってみた。
import java.util.ArrayList;
import java.util.LinkedList; import java.util.TreeMap;
public class ReportAccess { public String[] whoCanSee(String[] user,String[] data, String[] report){ TreeMap<String,LinkedList<String>> m = new TreeMap<String,LinkedList<String>>(); int index = 0; for(String usrdata: data){ String[] d = usrdata.split(" "); LinkedList<String> l = new LinkedList<String>(); for(String eachdata: d){ l.add(eachdata); } m.put(user[index++],l); } ArrayList<String> list = new ArrayList<String>(); for(String usrName: m.keySet()){ LinkedList datalist = (LinkedList)m.get(usrName); boolean hasAlldata = true; for(String r: report){ if (!datalist.contains(r)){ hasAlldata = false; break; } } if (hasAlldata) list.add(usrName); } String[] namelist = new String[list.size()]; list.toArray(namelist); return namelist; }
}