给出错误的输出
Posted
技术标签:
【中文标题】给出错误的输出【英文标题】:Giving Wrong output 【发布时间】:2020-09-08 23:07:09 【问题描述】:我在尝试 Leetcode 问题https://leetcode.com/problems/minimum-number-of-steps-to-make-two-strings-anagram/
它是返回使两个字符串变位词需要更改的最小字母数。然而,当传递一个字符串 "leetcode" 和其他字符串 "practice" 时,它应该给出输出为 5 但给出 3。
逻辑:
-
开始一个 for 循环,一个接一个地获取第一个字符串的字母。说“L”
然后计算第一个字符串中有多少个字母,即“L”。将其值存储在 val 中,即 val = 1;
然后类似地计算第二个字符串中“L”的数量并将该值存储在 count 中,即 count=0;
然后如果 val>count 减去 val - count 即 1-0 = 1 并将其存储在 sum 中;
现在在第一个字符串的每个字母中同样执行上述所有 4 个步骤,并将每个结果添加到 fsum 中,即 fsum+=sum;
因此 fsum 将告知需要更改的字母数。
谁能帮我找出我的错误?
class Solution
public:
int minSteps(string s, string t)
vector<char> v1;
char c;
int flag;
int val=0;
int count=0;
int len=0;
int sum=0;
int d=0;
int fsum=0;
for(int i=0;i<s.length();i++)
c=s[i];
flag=0;
vector<char> :: iterator it = find(v1.begin(),v1.end(),c);
if(it != v1.end())
flag=1;
break;
else
if(flag==0)
v1.push_back(c);
len=s.length();
d=0;
val=0;
while(len)
if(c==s[d]) val++;
d++; len--;
//comparison in 2nd string
len=t.length();
d=0;
while(len)
if(c==t[d]) count++;
d++; len--;
if(val>count)
sum=val-count;
fsum+=sum;
val=count=0;
return fsum;
;
【问题讨论】:
旁注,请初始化你的ints,如flag、val、count。并将它们放在单独的声明中。 做了但没有帮助。 也许它不会帮助解决这个错误,但它会帮助防止许多其他错误 好的,我分享更新的代码 抱歉,您没有明白重点。你应该初始化你的变量。你永远不会初始化count
并且使用它的值会导致未定义的行为
【参考方案1】:
您的逻辑似乎“大约”是正确的。但是,请检查以下代码:
vector<char> :: iterator it = find(v1.begin(),v1.end(),c);
if(it != v1.end())
flag=1;
break;
这就是说,如果字符 c 之前已经出现过,则 BREAK 退出循环。我假设你的意思是继续循环的下一次迭代。
这是因为当您中断时,您不会中断向量 v1 上的循环(我认为这是您的假设)。而是在字符串 s 上打破循环。
【讨论】:
还有一些其他缺失的部分,但正如我所说,我们会一起解决这个问题:) 我做了继续;声明也一样,但结果相同 永远不要写像 val=count=0 这样的语句。将其更改为 val=0;计数 = 0;原因是,每条语句都有一个返回值和它的作用。当你说 val=count=0 时,它被解释为 val = (count = 0),所以 count = 0 是一个表达式,它的返回值被赋值给 val。 @KaranNayyar 你发现缺陷了吗? 不,我还没有找到它,我也做了所有的改变和计数以上是关于给出错误的输出的主要内容,如果未能解决你的问题,请参考以下文章
我在 laravel 中运行“php artisan serve”命令时出错,它给出以下错误
python/tensorflowpycharm 2019,python 3.6.2, win7 64bit系统,安装tensorflow出错,错误如下,解决办法给出!
python/tensorflowpycharm 2019,python 3.6.2, win7 64bit系统,安装tensorflow出错,错误如下,解决办法给出!