虾皮算法第二第三题
感觉虾皮的题目比第一场简单好多好多。。是不缺人了嘛。。迟到十多分钟提前一个多小时交卷。。
第一题不说了。回文串。
第二题其实感觉主要是考字符串的输入输出的处理,我最开始还在纠结是不是会卡时间,卡空间什么的。然后先不管直接一把梭。。然后。。过了???
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());
}
} 很久没写算法代码了。。所以代码格式很丑。。。后期看看再练一练吧。不知道能不能过笔试。首先吐槽一下电脑。。做题的时候电脑管家弹出界面导致一次那啥。。然后小程序那边也是。不知道怎么的就说手机异常了。。然后退出小程序再重新进入就正常了。。不知道会不会记作弊。。

查看13道真题和解析