有赞笔试编程题讨论,附字符翻转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); } } }