刚做的一个公司的在线编程题,简单来说,就是比对两个数组,查看是否能够匹配成同一个单词。
代码是不够精简,不过哪里出问题了,导致分数那么低...
题目
Java 代码
public boolean solution(String S, String T) {
// write your code in Java SE 8
int SLength = 0;
int TLength = 0;
String[] SParts = S.split("[^\\d]+");
String[] TParts = T.split("[^\\d]+");
for(int i = 0; i < SParts.length; i++) {
if(!SParts[i].equals("")){
SLength += Integer.parseInt(SParts[i]);
}
}
for(int i = 0; i < TParts.length; i++) {
if(!TParts[i].equals("")){
TLength += Integer.parseInt(TParts[i]);
}
}
for(int i = 0; i < S.length(); i++) {
if(!Character.isDigit(S.charAt(i))){
SLength += 1;
}
}
for(int i = 0; i < T.length(); i++) {
if(!Character.isDigit(T.charAt(i))){
TLength += 1;
}
}
if(TLength != SLength) {
return false;
}
char[] sArray = S.toCharArray();
char[] tArray = T.toCharArray();
char[] sArrayFiltered = new char[SLength];
char[] tArrayFiltered = new char[TLength];
int sIndex = 0;
int tIndex = 0;
for(int i = 0; i < sArray.length; i++) {
if(Character.isDigit(sArray[i])) {
sIndex += Character.getNumericValue(sArray[i]);
} else {
sArrayFiltered[sIndex] = sArray[i];
sIndex++;
}
}
for(int i = 0; i < tArray.length; i++) {
if(Character.isDigit(tArray[i])) {
tIndex += Character.getNumericValue(tArray[i]);
} else {
tArrayFiltered[tIndex] = tArray[i];
tIndex++;
}
}
for (int i = 0; i < SLength; i++) {
if (sArrayFiltered[i]=='\0' || tArrayFiltered[i]=='\0') continue;
if (sArrayFiltered[i] != tArrayFiltered[i]) return false;
return true;
}
return true;
}
结果
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.