美文网首页
【oc算法】给定一个字符串,请你找出其中不含有重复字符的 最长子

【oc算法】给定一个字符串,请你找出其中不含有重复字符的 最长子

作者: 不烂超 | 来源:发表于2019-11-08 15:00 被阅读0次

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    示例 1:

    输入: "abcabcbb"
    输出: 3
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:

    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:

    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    - (int)lengthOfLongestSubstring:(NSString *)str
    {
        int length1 = 0;
        int maxLength = 0;
        BOOL flag = NO;
        int index2 = (int)str.length;
        if (str.length == 0) {
            return 0;
        } else {
            int strLength = (int)str.length;
            for (int i = 0; i < strLength; i++) {
                index2 --;
                if (flag) {
                    i = 0;
                    flag = NO;
                }
                NSString *str1 = [str substringToIndex:i+1];
                char c = [str characterAtIndex:i+1];
                NSString *cStr = [NSString stringWithFormat:@"%c", c];
                if ([str1 containsString:cStr]) {
                    maxLength = MAX(length1, (int)str1.length);
                    str = [str substringWithRange:NSMakeRange(i + 1, str.length - i- 1)];
                    length1 = (int)str1.length;
                    flag = YES;
                }
                
                if (index2 == 1) {
                    return MAX(maxLength, (int)str.length);
                }
            }
        }
        
        return MAX(maxLength, length1);
    }
    

    ————————————————
    版权声明:本文为CSDN博主「chaoge321」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/chaoge321/article/details/102971229

    相关文章

      网友评论

          本文标题:【oc算法】给定一个字符串,请你找出其中不含有重复字符的 最长子

          本文链接:https://www.haomeiwen.com/subject/qmzibctx.html