华为机试练习_11-15:数字颠倒_字符串反转_句子逆序_字串的连接最长路径查找_求int型整数在内存中存储时1的个数

11_数字颠倒

描述:输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
在这里插入图片描述
String是不可变类,但是StringBuilder是可变类,里面有个reverse()方法比较好用,翻转字符串。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            String str = scanner.next();
            //将String--》StringBuilder
            StringBuilder stringBuilder = new StringBuilder(str);
            System.out.print(stringBuilder.reverse());
        }
    }
}

12_字符串反转

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
在这里插入图片描述本题和上题思路相同,不赘述:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            String str = scanner.next();
            StringBuilder stringBuilder = new StringBuilder(str);
            System.out.println(stringBuilder.reverse());
        }
    }
}

13_句子逆序

将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明:

/**
 * 反转句子
 * 
 * @param sentence 原句子
 * @return 反转后的句子
 */
public String reverse(String sentence);

在这里插入图片描述
思路分析:所有单词之间用一个空格隔开,可以使用split()方法

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()){
            String str = scanner.nextLine();
            String[] split = str.split(" ");
            int len = split.length;
            for(int i=len-1;i>=0;i--){
                System.out.print(split[i]+" ");
            }
        }
    }
}

14_字串的连接最长路径查找

给定n个字符串,请对n个字符串按照字典序排列。
在这里插入图片描述
在这里插入图片描述
思路:API中有一个专门对数组进行排序的方法:Arrays.Sort(arr)
字符串排序,先大写后小写

String[] strArray = new String[] {"z", "a", "C"};
Arrays.sort(strArray);
输出: [C, a, z]

代码实现:下面代码其实是有问题的,就是当我们输入大写字母的时候会先排大写字母再排小写字母,但是测试通过了。。。。。。一脸懵逼

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            String[] stringArr = new String[n];
            for(int i=0;i<n;i++){
               stringArr[i] = scanner.next();
            }
            Arrays.sort(stringArr);
            for(int i=0;i<n;i++){
                System.out.println(stringArr[i]);
            }
        }
    }
}

思路2:API中除了数组排序,还有就是集合排序,集合汇总有个工具类Collections也可以进行排序。

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int n = scanner.nextInt();
            ArrayList<String> list = new ArrayList<>();
            for(int i=0;i<n;i++){
                list.add(scanner.next());
            }
            ///list中的对象String 本身含有compareTo方法,可以直接调用sort方法,按自然顺序排序,即升序排序
            Collections.sort(list);
            //得到list集合的迭代器
            Iterator<String> iterator = list.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
        }
    }
}

15_ 求int型整数在内存中存储时1的个数

输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。
在这里插入图片描述
思路:API中Integer类中的parseInt(String str,int radix)方法可以将任意进制的字符串转成十进制。同样Integer类中也有对应的方法可以将十进制转成其他进制。

通过调用Integer类的静态方法可以直接将一个int型整数转换为相应的二进制、八进制以及十六进制并且返回结果的字符串形式:

public class IntegerDemo {
    public static void main(String[] args) {
        int num=100;
        String str1 = Integer.toBinaryString(num);//1100100
        String str2 = Integer.toOctalString(num);//144
        String str3 = Integer.toHexString(num);//64
    }
}

代码实现:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()){
            int number = scanner.nextInt();
            String string = Integer.toBinaryString(number);

            char[] charArray = string.toCharArray();
            int k=0;
            for(int i=0;i<charArray.length;i++){
                //charArray[i]代表这个字符的ASCII值
                if(charArray[i]-48==1){
                    k++;
                }
            }
            System.out.println(k);
        }
    }
}
发布了716 篇原创文章 · 获赞 130 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_42764468/article/details/105409163
今日推荐