zoukankan      html  css  js  c++  java
  • 算法面试题五:反转字符串,整数反转,字符串中的第一个唯一字符

    这里介绍反转字符串,整数反转及字符串中的第一个唯一字符的个人解决方法

    题目一:反转字符串

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
    
    不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
    
    你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

    示例 1:

    输入:["h","e","l","l","o"]
    输出:["o","l","l","e","h"]

    示例 2:

    输入:["H","a","n","n","a","h"]
    输出:["h","a","n","n","a","H"]

    答案:

    /**
     * @param {character[]} s
     * @return {void} Do not return anything, modify s in-place instead.
     */
    var reverseString = function(s) {
        let length = s.length-1;
        for(let i= 0;i< s.length/2;i++){
            let value = '';
            value = s[i];
            s[i] = s[length-i];
            s[length-i] = value;
        }
        return s;
    };

    题目二:整数反转

    给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。
    
    如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
    
    假设环境不允许存储 64 位整数(有符号或无符号)。

    示例 1:

    输入:x = 123
    输出:321

    示例 2:

    输入:x = -123
    输出:-321

    示例 3:

    输入:x = 120
    输出:21

    示例 4:

    输入:x = 0
    输出:0

    答案:

    /**
     * @param {number} x
     * @return {number}
     */
    var reverse = function(x) {
       var s = (Math.abs(x) + '').split('').reverse().join('');
        var num =  +(x < 0 ? '-' + s : s);
        var b = Math.pow(2, 31);
        return num >= b || num < (-b) ? 0 : num;
    };

    题目三:字符串中的第一个唯一字符

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

    示例:

    s = "leetcode"
    返回 0
    
    s = "loveleetcode"
    返回 2

    提示:你可以假定该字符串只包含小写字母。

    /**
     * @param {string} s
     * @return {number}
     */
    var firstUniqChar = function(s) {
        let arr = s.split("");
        let bind = false;
        for(let i = 0;i < arr.length;i++){
          let num = 0;
          for(let j = 0;j< arr.length;j++){
            if(num == 2){
              break;
            }
            if(arr[i] == arr[j]){
              num++;
            }
    
          }
          if(num == 1 && bind == false){
            bind = i;
            return bind;
          }
        }
        if(bind == false){
          return -1;
        }
    };

    如果对你有帮助,请你点个推荐,我会和你一起进步,加油(*^▽^*)。

  • 相关阅读:
    关于根据索引 删除队
    Vs 2012 编译C 语言
    动态绑定 dgvlist 列
    自定义控件闪烁问题
    程序员都不读书,但你应该读
    对于委托的理解 委托和事件
    ​label 中 文字的位置
    vs2010 折叠C/c++中的if
    关于动态创建控件性能提高 以及 SuspendLayout & ResumeLayout 的使用
    c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
  • 原文地址:https://www.cnblogs.com/smileZAZ/p/14373066.html
Copyright © 2011-2022 走看看