数据结构字符串Leetcode实战Day5

数据结构字符串Leetcode实战Day5

1、反转字符串

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

这里我使用的是简单的反转即可。

class Solution {
    public void reverseString(char[] s) {
        int length = s.length;
        char temp;
        for (int i = 0; i < length/2; i++) {
            temp = s[i];
            s[i] = s[length-1-i];
            s[length-1-i] = temp;
        }
    }
}

看上去很简单,就是使用一个temp来作为寄存器即可。

2、数字溢出

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:

输入:x = -123
输出:-321
示例 3:

输入:x = 120
输出:21

解题思路:

class Solution {
    public int reverse(int x) {
        int temp = 0;
        while (x != 0) {
            int t = x % 10;
            int newtemp = temp * 10 + t;
            //如果数字溢出,直接返回0
            if ((newtemp - t) / 10 != temp)
                return 0;
            temp = newtemp;
            x = x / 10;
        }
        return temp;
    }
}

这次的数据还不错:

执行结果:通过
显示详情
执行用时:1 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:35.4 MB, 在所有 Java 提交中击败了70.18%的用户
通过测试用例:1032 / 1032

感谢大家阅读,明天我会继续努力学习算法。

上一篇:Loitor_产品(一)


下一篇:Day5类型转换