Hi, I want to make a function which does the following:
take two strings, str1 and str2. Check if all the characters of one string are contained in the other string. I want to solve this problem using iterators, so here is my code:
The problem is that I enter the two strings and press enter, but the compiler does nothing, i.e. cursor flashes but program doesn't compile nor allows me to do anything so I have just abruptly closed the window... what's going on???
My problem is to figure out if I have played correctly with the iterators and the find function.
The while loop on line 26 will either end immediately (str1.begin() == str1.end()) or never since i will not be changed within the loop. A for loop or range based loop for is better in this case.
Further more the loop should end (maybe with a break) if j == str2.end()
j is never incremented and so this will always return true and it is not clear what is the purpose of this block of code
1 2 3
string s1, s2;
(cin >> s1);
(cin >> s2);
as already mentioned on another thread, this is erroneous and stumbles on whitespace, use getline() instead
cout << "Is s1 contained in s2?? 0=no, 1=yes <<is_subsequence(s1,s2) <<endl;
there's a missing " after "yes" and there is no previous check that s1.size() is <= s2.size(). In fact, as you're trying to
(c)heck if all the characters of one string are contained in the other string
, the string with the larger number of unique (edit: ?) characters should be the parent string and the other string should be the child string and then you check if a child is a sub-set of the parent
Hi coder777, yes, thanks once more. In fact I had already implemented the break instruction within the loop, so the first time that j reached str2.end() the program already stops, avoiding the unnecessary check for all the other characters of str1. Thanks again!