「算法」整数反转 & 实现 strStr()

00007 整数反转

题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例 1:

输入: 123
输出: 321

示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

力扣地址

  • https://leetcode.com/problems/reverse-integer
  • https://leetcode-cn.com/problems/reverse-integer

解题报告

从个位逐个*10逆向追加, 可能有精度损失

public int reverse(int x) {
    int reverse = 0;
    while (x != 0){
        
        int pop = x % 10;
        x = x / 10;
        if(reverse > Integer.MAX_VALUE / 10 || (reverse == Integer.MAX_VALUE / 10 && pop > Integer.MAX_VALUE % 10)){
            reverse = 0;
            break;
        }
        if(reverse < Integer.MIN_VALUE / 10 || (reverse == Integer.MIN_VALUE / 10 && x < Integer.MIN_VALUE % 10)){
            reverse = 0;
            break;
        }
        reverse = reverse * 10 + pop;
        
    }
    return reverse;
}

转换成字符串翻转

public static int reverseInt(int number){
    String source = String.valueOf(number);
    String result = "";
    for(int i=0; i
小猿刷题

00028 实现 strStr()

题目描述

实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1

力扣地址

  • https://leetcode.com/problems/implement-strstr
  • https://leetcode-cn.com/problems/implement-strstr

解题报告

  • 采用双指针

算法实现

public static int strStr(String haystack, String needle) {
    if(null == needle || needle.length() == 0){
        return 0;
    }
    if(null == haystack ||  haystack.length() == 0 || needle.length() > haystack.length()){
        return -1;
    }
    for(int i = 0; i < haystack.length(); i++){
        // 前缀对齐
        if (haystack.charAt(i) == needle.charAt(0) && i + needle.length() <= haystack.length()) {
            String substr = haystack.substring(i, i + needle.length());
            if(substr.equals(needle)){
                return i;
            }
        }
    }
    return -1;
}
小猿刷题

你可能感兴趣的:(「算法」整数反转 & 实现 strStr())