截至目前为止练习的题目

来自网络和《程序源代码面试指南》:

package cn.itcast_04;

import java.util.ArrayList;
import java.util.List;

public class demo {
    public static void main(String[] args) {
        func(12345);        
        }

    //用递归实现数字翻转
    public static void func(int num){
        if(num==0){
            return;
        }
        System.out.print(num%10);
        func(num/10);       
    }

    //将整数字串转成整数值
    public static boolean isValid(char[] chas){
        if(chas[0]!='-' && (chas[0]<'0'||chas[0]>'9')){
            return false;
        }
        if(chas[0]=='-'&&(chas.length==1||chas[1]=='0')){
            return false;
        }
        if(chas[0]=='0'&&chas.length>1){
            return false;
        }
        for(int i=1;i<chas.length;i++){
            if(chas[i]<'0'||chas[i]>'9'){
                return false;
            }
        }
        return true;
    }

    public static int convert(String str){
        if(str==""||str==null){
            return 0;
        }
        char[] chas=str.toCharArray();
        if(!isValid(chas)){
            return 0;
        }
        boolean posi=chas[0]=='-'?false:true;
        int minq=Integer.MIN_VALUE/10;
        int minr=Integer.MIN_VALUE%10;
        int res=0;
        int cur=0;
        for(int i=chas[0]=='-'?1:0;i<chas.length;i++){
            cur='0'-chas[i];
            if((res<minq)||(res==minq&&cur<minr)){
                return 0;
            }
            res=res*10+cur;

        }
        if(posi==true&&res==Integer.MIN_VALUE){
            return 0;
        }
        return posi?-res:res;
    }

    //判断互为旋转词
    public static boolean isRotation(String a,String b){
        if(a==null||b==null||a.length()!=b.length()){
            return false;
        }
        String b2=b+b;
        return b2.indexOf(a)!=-1;
    }

    //去掉串中连续出现的k个0
    public static String removeKZero(String s,int k){
        if(s==null||k<-1){
            return s;
        }
        int count=0,start=-1;
        char[] c=s.toCharArray();
        for(int i=0;i<c.length;i++){
            if(c[i]=='0'){
                count++;
                start=start==-1?i:start;
            }
            else{
                if(count==k){
                    while(count--!=0){
                        c[start++]='*';
                    }

                }count=0;start=-1;
            }
        }
        if(count==k){
            while(count--!=0){
                c[start++]='*';
            }
        }

        return String.valueOf(c);
    }

    //1.兔子对数
    public static int getPair(int n){
        int count=0;
        if(n<=0){
            return -1;
        }
        else if(n==2||n==1){
            return 1;
        }
        count=getPair(n-1)+getPair(n-2);
        return count;
    }

    //2.输出101-200的素数
    public static ArrayList getSu(int min,int max){
        ArrayList num=new ArrayList();
        for(int i=min;i<=max;i++){
            if(i<=2){
                num.add(i);
                break;
            }
            for(int j=2;j<=i/2;j++){
                if(i%j==0){
                    break;
                }
                if(j==i/2){
                    num.add(i);
                }

            }
        }
        return num;

    }

    //判断素数
        private static boolean isPrime(int n){
            boolean flag = true;
            if(n==1)
              flag = false;
            else{
                for(int i=2;i<=Math.sqrt(n);i++){
                if((n%i)==0 || n==1){
                    flag = false;
                    break;
                }
                 else
                   flag = true;
              }
            }
            return flag;
        }

        //3.打印水仙花数
        private static boolean isShui(int n){
            boolean flag=false;
            int ge=n%10;
            int bai=n/100;
            int shi=(n/10)%10;
            if(n==ge*ge*ge+shi*shi*shi+bai*bai*bai){
                flag=true;
            }
            return flag;
        }

        //4.因式分解
        private static void decompose(int n){
            System.out.print(n+"=");
            for(int i=2;i<n+1;i++){
                while(n%i==0 && n!=i){
                    n/=i;
                    System.out.print(i+"*");
                }
                if(n==i){
                    System.out.println(i);
                    break;
                }
            }
        }

        //5.给成绩ABC
        private static char getCore(int grade){
            return grade>=90?'A':(grade<60?'C':'B');
        }

        //6.求最大公约数和最小公倍数
        public static void gongbei(int a,int b){
            int c=0;
            int bei=a*b;
            int gong=0;
            if(a<b){
                a=(a+b)-(b=a);
            }
            while(b!=0){
                c=a%b;
                a=b;
                b=c;
            }
            System.out.println("最大公约数是:"+a);
            System.out.println("最小公倍数是:"+bei/a);
        }

        //判断变形词字符串
        public static boolean isDeformation(String st1,String st2){
            if(st1==null||st2==null||st1.length()!=st2.length()){
                return false;
            }

            int[] map=new int[256];
            char[] char1=st1.toCharArray();
            char[] char2=st2.toCharArray();

            for(int i=0;i<char1.length;i++){
                map[char1[i]]++;
            }

            for(int i=0;i<char2.length;i++){
                if(map[char2[i]]--==0){
                    return false;
                }
            }

            return true;
        }

        //字符串中数字字串求和
        public static int numSum(String s){
            if(s==null){
                return 0;
            }
            char[] charArr=s.toCharArray();
            int res=0;
            int num=0;
            int cur=0;
            boolean posi=true;

            for(int i=0;i<charArr.length;i++){
                cur=charArr[i]-'0';
                if(cur<0||cur>9){
                    res+=num;
                    num=0;
                    if(charArr[i]=='-'){
                        if(i-1>-1 && charArr[i-1]=='-'){
                            posi=!posi;
                        }
                        else{
                            posi=false;
                        }
                    }
                }
                else{
                    num=num*10+(posi?cur:-cur);
                }
            }

            res+=num;
            return res;
        }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值