京东笔试9.9
100 80 20小记一下
1.只有r、e、d的字符串相邻相同字符如dd变成一个字符,最终相邻都不相等的最小变化次数(A)
import java.util.Scanner; public class _jd1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int ans=0; int count=0; for (int i=0; i<str.length()-1; i++){ if (str.charAt(i)==str.charAt(i+1)&& i<str.length()-2 && str.charAt(i+1)==str.charAt(i+2) ) { i+=2; ans++; } else if (str.charAt(i)==str.charAt(i+1)){ i++; ans++; } } System.out.println(ans); } }
2.n个数取子集,子集任意2数和为偶数(80%)
计算奇数和偶数个数,快速幂算子集个数,还有20在哪?
import java.util.Scanner; public class _jd2 { static final int MOD = 1000000007; public static long fastpow(long x, int n){ long ans = 1 % MOD; while ( n!=0 ){ if ((n&1)!=0) ans = (ans*x) % MOD; x = (x*x) % MOD; n >>= 1; } return ans; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int ji=0,ou=0; for(int i=0; i<n; i++){ if ((sc.nextInt()&1)==1) ji++; else ou++; } System.out.println(fastpow(2,ji)-ji-1 + fastpow(2,ou)-ou-1 ); } }3.k位的数字转字符,方案数等于k?只过了20求思路