首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无符号偏移量的运行时错误-addition

无符号偏移量的运行时错误-addition
EN

Stack Overflow用户
提问于 2021-07-16 02:12:58
回答 1查看 1.1K关注 0票数 4

我在解决这个问题-

编写一个反转字符串的函数。输入字符串作为字符的数组给出。

示例1:

输入:s= "h“、"e”、"l“、"l”、"o“输出:"o”、"l“、"l”、"e“、"h”示例2:

输入:s= "H“、"a”、"n“、"n”、"a“、"h”输出:"h“、"a”、"n“、"n”、"a“、"H”

我编写了这个解决方案,它提供了一个运行时错误:添加无符号偏移量。

代码语言:javascript
复制
class Solution {
public:
    
    void funToReverse(int left,int right,vector<char> &s){
        if(left==right)
            return;
        else{
            char temp = s[left];
            s[left]=s[right];
            s[right]=temp;
            funToReverse(left+1,right-1,s);
        }
    }
    
    void reverseString(vector<char>& s) {
        int left =0;
        int right = s.size()-1;
        
        
        funToReverse(left,right,s);
    }
};

错误:

运行时错误: 0x6020000001b0溢出到0x6020000001af (stl_vector.h)汇总: UndefinedBehaviorSanitizer:未定义-行为stl_vector.h

EN

回答 1

Stack Overflow用户

发布于 2021-07-16 02:21:16

问题是,leftright之间有可能相互传递而不具有相同的值。解决这一问题的一个方法是:

代码语言:javascript
复制
class Solution {
public:
    
    void funToReverse(int left,int right,vector<char> &s){
        if(left>=right) // Check if left has reached right
            return;
        else{
            char temp = s[left];
            s[left]=s[right];
            s[right]=temp;
            funToReverse(left+1,right-1,s);
        }
    }
    
    void reverseString(vector<char>& s) {
        int left =0;
        int right = s.size()-1;
        
        
        funToReverse(left,right,s);
    }
};

如果有奇数的元素,则(左,右)如下:(0,4),(1,3),(2,2)

但是,如果有偶数的元素,则左将向右传递但绝不相同:(0,5),(1,4),(2,3),(3,2),(4,1),(5,0),(6,-1)

请注意,在这个实例中,left一直到6,而right使其变为-1,这是无效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68402660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档