版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27717921/article/details/52895324
题目一:
连续重复的字符串进行字符串的压缩操作
如wwweerqqqq输出则为3w2e1r4q
public class Text3 {
private static String str;
public static void readIn(){
Scanner in = new Scanner(System.in);
str = in.next();
System.out.print(compressStr(str));
}
//对连续重复的字符串进行字符串的压缩操作
public static StringBuffer compressStr(String str){
StringBuffer sb = new StringBuffer();
int count;
for(int i=0;i<str.length();i=i+count){
char temp = str.charAt(i);
count = 1;
for(int j=i+1;j<str.length();j++){
if(str.charAt(j)==temp){
count++;
}else{
break;
}
}
if(count!=1){
sb.append(count);
}
sb.append(temp);
}
return sb;
}
public static void main(String[] args) {
/*System.out.print(Text3.compressStr("xxxyyyyzzxx"));
System.out.print(Text3.compressStr("xyzewrs"));*/
Text3.readIn();
}
}
题目2
比如43数字可以生成43+4+3=50
我们就说d(43)=50,50是由43生成的,求出100范围内不能被按照这种模式生成的数字有哪些,这个结果可以验证一下
package TEXT;
import Test.Test10;
public class Text1 {
//有没有一种是求解差集的思想在里面
//定义一个函数,判断这个数是否满足a的定义,暂定为在100的范围以内
public static boolean judge(int m){
int a = m/10;
int b = m%10;
/*System.out.print(a);
System.out.print(b);*/
if(!IsSame(m)){
for(int j=(a-1)*10;j<=a*10;j++){
int sum = j+j/10+j%10;
if(sum==m){
return true;
}
}
}else if(IsSame(m)){
for(int j=(a-2)*10;j<=(a+1)*10;j++){
int sum = j+j/10+j%10;
if(sum==m){
return true;
}
}
}
return false;
}
public static boolean IsSame(int m){
int a = m/10%2;
int b = m%10%2;
return a==b?true:false;
}
public static void print(){
for(int i=1;i<100;i++){
if(!judge(i)){
System.out.print(i);
System.out.println();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/*System.out.print(Text1.judge(55));*/
Text1.print();
}
}
题目3:约瑟夫环问题
已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列
package TEXT;
public class Text2 {
//约瑟夫环
public static void Josephus(int N, int M)
{
int f[] = new int[100];
f[1] = 0; //说明默认是从第一数字开始进行的
for(int i = 2; i <= N; i++)
{
f[i] = (f[i - 1] + M) % i;
}
System.out.print((f[N]+1)+" ");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Text2.Josephus(10, 8);
}
}