# Can someone tell me what's wrong with this question on StackOverflow?

#### Stopfield

I made this question and got downvoted in a day, although I got the answer I needed. But, I wanted to know what really is wrong with this question. I posted all information necessary. It got closed because it needs debugging details, but I surely put the code in.
Here it goes:

## The question​

I´m trying to solve the problem num. 389 at LeetCode (https://leetcode.com/problems/find-...nvType=study-plan-v2&envId=programming-skills), which is a very simple problem of finding a different character in a shuffled string `t` based on string `s`.

EDIT: In the problem, a random character from `s` is added to `t`, so that `t` is one `char` bigger than `s`.

I found a solution in C++ which works fine. Here´s the solution (made by user astrixsanath14):
C++:
``````// C++
class Solution {
public:
char findTheDifference(string s, string t)
{
for(int i=0;i<s.size();i++)
t[i+1]+=t[i]-s[i]; //Passing the diff: (t[i]-s[i]) to t[i+1]
return t[t.size()-1]; //The diff will be carried over to the last element eventually
}
};``````
The C++ solution calculates the difference of ASCII codes in a space and "propagated" it to the next one. Thus, making the differnce in the final space in `t`. That´s what we want, the different `char`.

So, I replicated the code in C. This is the code:
C:
``````char findTheDifference(char * s, char * t){
for (int i = 0; i < strlen(s); i++)
{
t[i + 1] += t[i] - s[i];
}
return t[strlen(t) - 1];
}``````

However, an error occurs in testcase number 25, which receives as input these variables:
Code:
``````s =

Code:
``````t =
"qhxepbshlrhoecdaodgpousbzfcqjxulatciapuftffahhlmxbufgjuxstfjvljybfxnenlacmjqoymvamphpxnolwijwcecgwbcjhgdybfffwoygikvoecdggplfohemfypxfsvdrseyhmvkoovxhdvoavsqqbrsqrkqhbtmgwaurgisloqjixfwfvwtszcxwktkwesaxsmhsvlitegrlzkvfqoiiwxbzskzoewbkxtphapavbyvhzvgrrfriddnsrftfowhdanvhjvurhljmpxvpddxmzfgwwpkjrfgqptrmumoemhfpojnxzwlrxkcafvbhlwrapubhveattfifsmiounhqusvhywnxhwrgamgnesxmzliyzisqrwvkiyderyotxhwspqrrkeczjysfujvovsfcfouykcqyjoobfdgnlswfzjmyucaxuaslzwfnetekymrwbvponiaojdqnbmboldvvitamntwnyaeppjaohwkrisrlrgwcjqqgxeqerjrbapfzurcwxhcwzugcgnirkkrxdthtbmdqgvqxilllrsbwjhwqszrjtzyetwubdrlyakzxcveufvhqugyawvkivwonvmrgnchkzdysngqdibhkyboyftxcvvjoggecjsajbuqkjjxfvynrjsnvtfvgpgveycxidhhfauvjovmnbqgoxsafknluyimkczykwdgvqwlvvgdmufxdypwnajkncoynqticfetcdafvtqszuwfmrdggifokwmkgzuxnhncmnsstffqpqbplypapctctfhqpihavligbrutxmmygiyaklqtakdidvnvrjfteazeqmbgklrgrorudayokxptswwkcircwuhcavhdparjfkjypkyxhbgwxbkvpvrtzjaetahmxevmkhdfyidhrdeejapfbafwmdqjqszwnwzgclitdhlnkaiyldwkwwzvhyorgbysyjbxsspnjdewjxbhpsvj"``````

The correct output is `t`, but mine just returns an empty string, more specifically the ASCII code 11, which is a tab space.

What do you think is wrong with this code? Why it does not work in this case?

EDIT: From what I saw, it was an overflow problem. Since `char` is only a byte long, a big enough string would surpass it. To solve the problem, it´s necessary to use a bigger data type, in that case `short` is enough. Here´s the solution. Feel free to judge the code!

C:
``````char findTheDifference(char * s, char * t){
short sum = t[strlen(t) - 1];
for (size_t i = 0; i < strlen(s); i++)
{
sum += t[i] - s[i];
}
return (char) sum;
}``````

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.