华为机试1-10 Java实现

来源:互联网 发布:穿越火线刷装备软件 编辑:程序博客网 时间:2024/05/12 14:35

题目描述:字符串最后一个单词的长度

计算字符串最后一个单词的长度,单词以空格隔开。

输入描述:
一行字符串,非空,长度小于5000。

输出描述:
整数N,最后一个单词的长度。

输入例子:
hello world

输出例子:
5

import java.util.Scanner;public class Main{    public static void main(String[] args){        int count = 0;        Scanner input = new Scanner(System.in);        String str = input.nextLine();        String chr = input.nextLine();        for(int i = 0; i < str.length();i++){            if (chr.toLowerCase().charAt(0) == str.toLowerCase().charAt(i))                count++;        }        System.out.println(count);    }}

题目描述:计算字符个数

计算字符串最后一个单词的长度,单词以空格隔开。

输入描述:
一行字符串,非空,长度小于5000。

输出描述:
整数N,最后一个单词的长度。

输入例子:
hello world

输出例子:
5

import java.util.Scanner;public class Main{    public static void main(String[] args){        int count = 0;        Scanner input = new Scanner(System.in);        String str = input.nextLine();        for(int i = str.length() - 1; i >= 0; i--){            if (str.charAt(i) == ' ')                break;            ++count;        }        System.out.println(count);    }}

import java.util.Scanner;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        String str = sc.nextLine();        String[] strArray = str.split("\\s");        int size = strArray.length;        System.out.println(strArray[size-1].length());     }}

题目描述:明明的随机数

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。

Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组

Return Value
OutputArray 输出处理后的随机整数

import java.util.*;public class Main{    public static void main(String[] args){        Scanner input = new Scanner(System.in);        while(input.hasNextInt()){            Set<Integer> set = new HashSet<>();            int n = input.nextInt();            for(int i = 0; i < n; i++){                set.add(input.nextInt());            }            List<Integer> list = new ArrayList<>();            list.addAll(set);            Collections.sort(list);            for(int i : list){                System.out.println(i);            }        }    }}

题目描述:字符串分隔

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

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

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

输入例子:
abc
123456789

输出例子:
abc00000
12345678
90000000

import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            String s = sc.nextLine();            StringBuffer sb = new StringBuffer(s);            if(s.length() % 8 != 0){                int n = 8 - s.length() % 8;                for(int i = 0; i < n; i++){                    sb.append("0");                }            }            for(int i = 0; i < sb.length() / 8; i++){                System.out.println(sb.substring(8 * i, 8 * i + 8));            }        }    }}

题目描述:【进制转换】

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

输入描述:
输入一个十六进制的数值字符串。

输出描述:
输出该数值的十进制字符串。

输入例子:0xA

输出例子:
10

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int value = 0;            String str = sc.nextLine();            for(int i = str.length() - 1; i >=2; i--){                int digit = digitToValue(str.charAt(i));                int exp = str.length() - i - 1;                value += digit * Math.pow(16, exp);            }            System.out.println(value);         }    }    public static int digitToValue(char c){        if(c >= '0' && c <= '9') return c - '0';        else if(c >= 'A' && c <= 'Z') return c - 'A' + 10;        else if(c >= 'a' && c <= 'z') return c - 'a' + 10;        return -1;    }}

题目描述:质数因子【不好理解】

功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
最后一个数后面也要有空格
详细描述:

函数接口说明:
public String getResult(long ulDataInput)
输入参数:
long ulDataInput:输入的正整数
返回值:
String

输入描述:
输入一个long型整数

输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。

输入例子:180

输出例子:
2 2 3 3 5

import java.util.*;// 问题的意思,其实就是让你把输入的整数因式分解,只不过因子必须都是质数// 例如:180 = 2 * 2 * 3 * 3 * 5;90 = 2 * 3 * 3 * 5;而不是找出所有的质数因子public class Main {     public static void main(String[] args) {           Scanner sc = new Scanner(System.in);           while (sc.hasNext()) {                long input = sc.nextLong();                getResult(input);           }     }     public static void getResult(long ulDataInput){     while(ulDataInput != 1){           for(int i = 2; i <= ulDataInput; i++){                if(ulDataInput % i == 0){                     ulDataInput /= i;                     System.out.print(i + " ");                     break;                }           }     }     }}

题目描述:取近似值

写出一个程序,接受一个正浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。

输入描述:
输入一个正浮点数值

输出描述:
输出该数值的近似整数值

输入例子:5.5

输出例子:
6

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            float f = sc.nextFloat();            if(f > 0){                System.out.println(Math.round(f));            }        }    }}

题目描述:提取不重复的整数

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

输入描述:
输入一个int型整数

输出描述:
按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

输入例子:9876673

输出例子:
37689

import java.util.*;public class Main{    public static void main(String[] args){        Set<Integer> set = new LinkedHashSet<>();        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int num = sc.nextInt();            while(num != 0){                set.add(num % 10);                num /= 10;               }        }       Iterator it = set.iterator();       while(it.hasNext()){               Integer i = (Integer)it.next();            System.out.print(i);       }    }}

【注】使用LinkedHashSet 保证数据唯一,不加入后面的重复数据,保证了出现顺序。
如果直接使用HashSet,虽然保证了数据的唯一性,但是进行了排序。(X)

题目描述:数字颠倒

描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

输入描述:
输入一个int整数

输出描述:
将这个整数以字符串的形式逆序输出

输入例子:1516000

输出例子:
0006151

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            int input = sc.nextInt();            while(input != 0){                System.out.print(input % 10);                input /= 10;            }        }    }}

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            StringBuilder sb = new StringBuilder(sc.nextLine());            System.out.println(sb.reverse().toString());        }    }}

题目描述:字符串反转

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。例如:

输入描述:
输入N个字符

输出描述:
输出该字符串反转后的字符串

输入例子:
abcd

输出例子:
dcba

import java.util.*;public class Main{    public static void main(String[] args){        Scanner sc = new Scanner(System.in);        while(sc.hasNext()){            StringBuilder sb = new StringBuilder(sc.nextLine());            System.out.println(sb.reverse().toString());        }    }}
0 0
原创粉丝点击