虾皮算法第二第三题
感觉虾皮的题目比第一场简单好多好多。。是不缺人了嘛。。迟到十多分钟提前一个多小时交卷。。
第一题不说了。回文串。
第二题其实感觉主要是考字符串的输入输出的处理,我最开始还在纠结是不是会卡时间,卡空间什么的。然后先不管直接一把梭。。然后。。过了???
package com.java8.lambda; import java.util.Scanner; public class Abdfad { public static void main(String[] args){ Scanner input = new Scanner(System.in); String str = input.nextLine(); str = str.substring(1,str.length()-1); String[] strs = str.split(","); int len = strs.length; int[] values = new int[len]; StringBuffer sb = new StringBuffer(); sb.append("["); for(int i=0;i<len;i++){ strs[i] = strs[i].trim(); values[i] = Integer.parseInt(strs[i]); } for(int i=0;i<len;i++){ int count = 0; for(int j=i+1;j<len;j++){ if(values[j]<values[i]){ count++; } } if(i==0){ sb.append(""+count); }else{ sb.append(", "+count); } } sb.append("]"); System.out.println(sb.toString()); } } /** * [4, 3, 9, 2] */
第三题也是。。开始一直想怎么递归。。后来想想。算了。直接一把梭吧。。分割一下然后直接找从"xxxx”找中间的就ok。。然后再拼接一下。。
package com.java8.lambda; import java.util.Scanner; public class Abdfad { public static String helper(String str){ int len = str.length(); String res = ""; boolean flag = false; for(int i=0;i<len;i++){ if(flag){ if('"' == str.charAt(i)){ return res; }else{ res+=str.charAt(i); } }else{ if('"' == str.charAt(i)){ flag = true; } } } return ""; } public static void main(String[] args){ Scanner input = new Scanner(System.in); String str = input.nextLine(); str = str.substring(1,str.length()-1); String[] strs = str.split(","); int len = strs.length; String[] values = new String[len]; StringBuffer sb = new StringBuffer(); sb.append("\""); for(int i=0;i<len;i++){ String temp = strs[i].trim(); if(i==0){ sb.append(helper(temp)); }else{ sb.append("\\"+"n"+helper(temp)); } } sb.append("\""); System.out.println(sb.toString()); } }
很久没写算法代码了。。所以代码格式很丑。。。后期看看再练一练吧。不知道能不能过笔试。首先吐槽一下电脑。。做题的时候电脑管家弹出界面导致一次那啥。。然后小程序那边也是。不知道怎么的就说手机异常了。。然后退出小程序再重新进入就正常了。。不知道会不会记作弊。。