华为机试(字符串间隔,进制转换,质数因子)Java

题目来源:牛客网

1.字符串分隔

题目描述

•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。

输入描述:

连续输入字符串(输入2次,每个字符串长度小于100)

输出描述:

输出到长度为8的新字符串数组

输入

abc
123456789

输出

abc00000
12345678
90000000

    
    

/**
 * Created by a819 on 2017/8/30.
 */
/**
思路:不够8位,末尾补0,取前8位
多于8位 拆分,之后一次补0取前8位
 */
import java.util.*;
public class Main {

    public static void main(String[] args) {
        //System.out.println("Hello World!");
        Scanner cin=new Scanner(System.in);
        while (cin.hasNext()){
            String str1=cin.nextLine();
            String str2=cin.nextLine();
            //String str2=cin.nextLine();
           // int len=str1.length()/8+1+str2.length()/8+1;
            //String res[]=new String[len];
        //不够8位,末尾补0,取前8位
         if (str1.length()<8){
             str1+="00000000";
             System.out.println(str1.substring(0,8));
         }
         else {//将字符串的按8位进行拆分
             while (str1.length() >= 8) {
                 System.out.println(str1.substring(0, 8));
                 str1 = str1.substring(8, str1.length());
             }
             if (str1.length() > 0) {//如果拆分之后,还存在不够8位的字符串 末尾补0取8位
                 str1 += "00000000";
                 System.out.println(str1.substring(0, 8));
             }
         }
            //字符串进行同样的操作
            if (str2.length()<8){
                str2+="00000000";
                System.out.println(str2.substring(0,8));
            }
            else {
                while (str2.length() >= 8) {
                    System.out.println(str2.substring(0, 8));
                    str2 = str2.substring(8, str2.length());
                }
                if (str2.length() > 0) {
                    str2 += "00000000";
                    System.out.println(str2.substring(0, 8));
                }
            }

        }
    }
}

/**
 * Created by a819 on 2017/9/1.
 */
import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner cin=new Scanner(System.in);
        int num;
        int res=0;
        int j=0;
        while(cin.hasNext()){
           String str=cin.nextLine();
        //String str="0xC460";

            str=str.substring(2,str.length());
            for (int i=str.length()-1;i>=0;i--){
                if (str.charAt(i)>='0'&&str.charAt(i)<='9')
                {    int fang=1;
                     num=str.charAt(i)-'0';
                     for (int k=0;k<j;k++){
                         fang*=16;
                     }
                     num*=fang;
                     res+=num;
                    j++;
                }
                else {
                    int fang=1;
                    switch (str.charAt(i)) {
                        case 'A':
                            num =10;break;
                        case 'B':
                            num=11;break;
                        case 'C':
                            num=12;break;
                        case 'D':
                            num=13;break;
                        case 'E':
                            num=14;break;
                        case 'F':
                            num=15;break;
                        default:num=0;
                    }
                    for (int k=0;k<j;k++){
                        fang*=16;
                    }
                    num*=fang;
                    res+=num;
                    j++;
                }

            }
            System.out.println(res);

        }
    }
}

3.质数因子

写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入

/**
 * Created by a819 on 2017/9/2.
 */
import java.util.*;
public class H_Zhishuyinzi {
    public static void main(String[] args) {
        Scanner cin=new Scanner(System.in);
        while(cin.hasNext()) {
            Long num = cin.nextLong();
        //long num=64577;
            if (num==1)
                System.out.println(" ");
            else
            while(num!=1)//循环打印
            for (long i = 2;i<=num;i++){
                if (num%i==0){
                    if (isZhiShu(i)){
                        System.out.print(i+" ");
                        num/=i;
                        break;
                        //System.out.println(num);

                    }
                }
            }
        }
    }
    private static boolean isZhiShu(long k){//判断是不是质数
        if (k==1)
            return false;
        long lim=(long)Math.sqrt(k);
        for (long i=2;i<=lim;i++)
            if(k%i==0)
                return false;
        return true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值