题解 HJ9| #提取不重复的整数#

提取不重复的整数

https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str=in.nextLine();
        int[] myarray=new int[str.length()];
        //倒序
        for(int i =0;i<str.length();i++){
            myarray[i]=str.charAt(str.length()-i-1)-'0';
        }
        
        //去重
        int cout=0;
        for(int i =str.length()-1;i>=0;i--){
            for(int j =i-1;j>=0;j--){
            if(myarray[i]==myarray[j]){
                for(int k=i;k<str.length()-1;k++){
                    myarray[k]=myarray[k+1];
                }
                cout++;
            }
        }
        }
        
        //输出
        for(int i=0;i<str.length()-cout;i++){
            System.out.print(myarray[i]);
        }
    }
}

提取不重复的整数,先把整数以字符串的方式接收,再转化为int数组形式操作

String str=in.nextLine();

int[] myarray=new int[str.length()];

从字符串到数组,正好题目需要倒序,我们就倒序来存入,从字符串最后一位往数组里存

//倒序

for(int i =0;i<str.length();i++){

myarray[i]=str.charAt(str.length()-i-1)-'0';//字符串里的字符不能直接存,转化的是字符ascll码,所以要-‘0’,减去0的ascall码

}

题目要求不能有重复的,所以我们再通过一一比较去把重复的去掉(实际为从那个位置开始,每一个都等于后一个来去除),从后往前,再设置一个计数器,计算有多少个重复的数字

int cout=0;

for(int i =str.length()-1;i>=0;i--){

for(int j =i-1;j>=0;j--){

if(myarray[i]==myarray[j]){

for(int k=i;k<str.length()-1;k++){

myarray[k]=myarray[k+1];

}

cout++;

}

}

}

最后输出,从前往后输出总数-重复数字数的个数的数字即可

for(int i=0;i<str.length()-cout;i++){

System.out.print(myarray[i]);

}

#华为od题库#
华为OD笔试库讲解,JAVA版 文章被收录于专栏

随便发发而已

全部评论

相关推荐

shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务