当前位置: 代码迷 >> 综合 >> 携程笔试 2019.4
  详细解决方案

携程笔试 2019.4

热度:24   发布时间:2023-10-16 14:20:01.0

1.判断链表是否有环(用的是ArrayList 中 contains方法)

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();String[] str = s.split(",");boolean flag = false;ArrayList<String> list = new ArrayList<String>();for(int i=0;i<str.length;i++){if(list.contains(str[i])){flag = true;break;}elselist.add(str[i]);}System.out.println(flag);
}

2.反转链表

  输入:

  [1,2,3,4]

  2

输出: 

 [2,1,4,3]

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();int k = scanner.nextInt();s=s.replace("[","").replace("]","");String[] str =s.split(",");Demo6 test = new Demo6();test.method(str,k);
System.out.print("[");for(int i=0;i<str.length-1;i++)System.out.print(str[i]+",");System.out.print(str[str.length-1]+"]");
}
public void method(String[] str,int k){int i=0;while(i<str.length&&(i+k)<=str.length){int j =i;int r = i+k-1;while(j<r){swap(str,j,r);j++;r--;}i=i+k;}
}
public void swap(String[] str,int i,int j){String temp = str[i];str[i] =str[j];str[j] = temp;
}

3. (通过 71%

输入:2  /order/print/printlist  /order/print/printlist

输出: 111 121

 

输入:3 /order/print/printlistlist/printlist  /order/print/printlistlist/printlist /order/print/printlistlist/printlist

输出:1111 1221 1331

public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int num = scanner.nextInt();String s = scanner.next();String[] ss = new String [num];Demo5 test = new Demo5();HashMap<String,Integer> map = new HashMap<String, Integer>();for(int i=0;i<num;i++){ss[i] = scanner.next();System.out.print(test.getResult(ss[i],map));System.out.print(" ");}}public String getResult(String s, HashMap<String,Integer> map){String[] strs = s.split("/");String result ="";if(strs.length==1){return "";}for(int i=1;i<strs.length;i++){int num = map.getOrDefault(strs[i],0);map.put(strs[i],num+1);}result+="1";if(strs.length==2){
return result;}if(strs.length==3){result +="1";return result;}for(int i=2;i<strs.length-1;++i){result +=map.get(strs[i]);}result+="1";return result;}