有赞笔试编程题讨论,附字符翻转ac代码
第一题没AC的是不是没有考虑单引号
package company.youzan._20170921._01;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String s = in.nextLine();
String result = process(s.toCharArray());
System.out.println(result);
}
}
private static String process(char[] s) {
reverse(s, 0, s.length - 1);
int i, j;
for (i = 0; i < s.length; ++i) {
if (isWord(s[i])) {
for (j = i + 1; j < s.length; ++j) {
if (!isWord(s[j])) {
reverse(s, i, j - 1);
break;
} else if (j == s.length - 1) {
reverse(s, i, j);
break;
}
}
i = j;
}
}
return String.valueOf(s);
}
private static void reverse(char[] s, int start, int end) {
int i = start;
int j = end;
char c;
while (i < j) {
c = s[i];
s[i] = s[j];
s[j] = c;
++i;
--j;
}
}
private static boolean isWord(char c) {
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z' || c == '\'');
}
}
第二题无限40%。。。
难倒m和n也是要来long?当时没试
package company.youzan._20170921._02;
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLong()) {
long k = in.nextLong();
int m = in.nextInt();
int n = in.nextInt();
int x = -1, y = -1;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (k == in.nextLong()) {
x = i;
y = j;
}
}
}
System.out.println(x + " " + y);
}
}
}
