一、回文串更改
对于任意一个字符串,它至少需要替换多少个字符才能将它变为回文字符串,可以选择任意一个位置的字符将其替换
输入:第一行一个整数n,表示字符串的长度,第二行n个小写字母表示字符串
输出:一个整数表示最少替换的字符串个数
import java.util.Scanner;
public class test1{
public static void main(String[] args){
Scanner in=new Scanner (System.in);
int n=in.nextInt();
String str=in.next();
int count =0;
for(int i=0;i<n/2;i++){
if(str.charAt(i)!=str.charAt(n-1-i)){
count++;
}
}
System.out.println(count);
}
}
二、拆数字
给一个数字n,将其拆成k个数字的和,使得用这k个数字的部分和能表示出1到n中的所有数字,例如n=6,k=3时,6分成1,2,3,那么1=1,2=2,3=3,4=1+3,5=2+3,6=1+2+3,现在给n,求最小的k是多少?
输入:第一行一个整数t,表示有t组数据,接下来有t行,每个一个整数n,1=<t<=1000,1=<n<=10^9
输出:为t行,每行表示一个最小的k
import java.util.Scanner;
public class test2{
public static void main(String[] args){
Scanner in=new Scanner (System.in);
int t=in.nextInt();
for(int i=0;i<t;i++){
long n=in.nextLong();
System.out.println(dfs(n));
}
}
public static int dfs(long n){
int num=0;
while(n>0){
n=n/2;
num++;
}
}