算法面试题五:反转字符串,整数反转,字符串中的第一个唯一字符

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

题目一:反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 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;
    }
};

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

posted @ 2021-02-04 15:55  林恒  阅读(227)  评论(0编辑  收藏  举报