2016-03-28 17:10
中山大学南方学院 Java 剑指MS:import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()){
String line = scanner.nextLine();
char[] ch = line.toCharArray();
System.out.println(process(ch));
}
scanner.close();
}
private static String process(char[] ch) {
List<Integer> list = new ArrayList<Integer>();
StringBuilder sb = new StringBuilder();
int high = 0; //high代表遍历的上限
for (int i = 0; i < ch.length; i++) {
if (ch[i] == 'g' || ch[i] == '9') {
list.add(i);
high = high * 2 + 1 ;
}
}
for (int i = 0; i <= high; i++) {
for (int j = 0; j < list.size(); j++) {
if (((i>>>j)&1) != 0) {
ch[list.get(j)] = '9';
}else {
ch[list.get(j)] = 'g';
}
}
sb.append(new String(ch)+",");
}
return sb.toString();
}
}
我的代码。
0 点赞 评论 收藏
分享
2016-03-21 22:29
中山大学南方学院 Java 牛客279218号:原题的话,维护一个进位carry =0 ,第一位的值为
(2016+carry)% 10 =6;
carry = (2016 + carry)/10 ;以此类推。
变形题的话, 先全部 +1 ,再减 2016,结果就等于 (1111111111…………1110)(2进制)-2016(10进制)。

0 点赞 评论 收藏
分享
2016-03-05 22:23
中山大学南方学院 Java Jackhaha:这个是旋转数组的题,写了一下代码如下
public static void rotateArray(int[] a, int k){
if(k%a.length==0){
return ;
}
if(k>a.length){
k = k%a.length;
}
reverse(a,0,a.length-1);
reverse(a,0,k-1);
reverse(a,k,a.length-1);
}
public static void reverse(int[] a, int start, int end){
while(start<end){
int tmp = a[end];
a[end] = a[start];
a[start] = tmp;
start++;
end--;
}
}

0 点赞 评论 收藏
分享
2015-11-24 15:39
中山大学南方学院 Java 牛客279218号:用哈希表,从左往右遍历数组,设数组值为value,如果hashmap中存在100-value,则有(value,100-value)对,然后将value插入hashmap(如果value不存在)。时间复杂度o(n)。
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: