【JavaScript——牛客网算法No.HJ59】找出字符串中第一个只出现一次的字符

  • @No.HJ59 找出字符串中第一个只出现一次的字符

  • @problem description:
    找出字符串中第一个只出现一次的字符
  • @input description:
    输入几个非空字符串
  • @output description:
    输出第一个只出现一次的字符,如果不存在输出-1

  • 示例

  • @input:
    asdfasdfo
    aabb
  • @output:
    o
    -1
var str1 = readline();
var str2 = readline();

function fun(str){
    var arr = str.split("");
    var button = 1;
    for(var i=0;i<arr.length && button == 1;i++){
        var mid = arr.slice(0);
        var del = mid.splice(i,1);
        if(mid.indexOf(del[0]) == -1){
            console.log(del[0]);
            button = 0;
        }else if(i == arr.length-1){
            console.log(-1);
        };
    };   
};
fun(str1);
fun(str2);

算法分析:

由于需要处理的数据有两次,所以还是封装一个函数fun来调用。
对字符串的操作本质上都可以转换成数组的操作,而且更方便,要灵活运用split()方法。
button变量是定义的一个循环开关,在需要结束循环的时候,改变button的值即可。


在每次循环中,都重新克隆一个原arr数组mid,之后splice删除取出对应 i 的字符,然后用indexOf()方法检测每次取出的字符在剩余mid数组中的位置下标:

如果没有找见,indexOf()方法会返回 -1 ,即取出的字符在原字符串中是唯一的,则输出这个字符并修改button的值结束循环;
如果一直到循环的最后一次( i == 数组最后一个元素下标)都没有返回 -1 ,则说明这个字符串中没有唯一字符,则返回 -1 即可。


Code_Zevin_J —— 2020-08-05 20:03:34

猜你喜欢

转载自blog.csdn.net/JZevin/article/details/107873385