DEV Community

Discussion on: Terrible interview question: Swap variables without a temporary

Collapse
 
rachelsoderberg profile image
Rachel Soderberg • Edited

I had an interviewer ask me to do a string comparison in C++ without using any libraries. I was probably already out when I asked whether String was a library....

Collapse
 
mortoray profile image
edA‑qa mort‑ora‑y

You should mention that a proper normalizing comparison requires the full ICU library, loading many Unicode data point files, and several conversion functions. You could write it, with access to the standard, but it'd take you a few years -- assuming you'd also need to write the loading functions without any libraries. :D

Collapse
 
nestedsoftware profile image
Nested Software • Edited

Just out of curiosity, if the goal is simply to compare two strings, would this still be necessary? I assume that it must be possible to represent any string, regardless of encoding, in some lower-level way. All we'd want to do is to make sure that the two strings are the same when compared in this way, like a list of "characters" or even just an array of arbitrary values...

Thread Thread
 
mortoray profile image
edA‑qa mort‑ora‑y

Yes. Presumably you want to do a real-world comparison, not a byte-for-byte comparison. There are numerous rules in Unicode on how that should be done. Thanks to combining characters, precomposed characters, ligatures, and some other features, there are numerous ways two equal strings can be encoded.

Thread Thread
 
nestedsoftware profile image
Nested Software • Edited

Interesting and a bit scary! I’d have thought it should be possible to force some kind of ordering to prevent that...

Collapse
 
lazarljubenovic profile image
Lazar Ljubenović

But string comparison is one for-loop, no? Sure, in production you'd use String, but what's so weird in that question? A person who cannot compare two arrays might not be good fit for every job.

Collapse
 
rachelsoderberg profile image
Rachel Soderberg

I don't recall whether it was one or two, but I did end up simply working through using char values. I was able to solve the problem as well as one can on a whiteboard, but I think it took me longer than they wanted (and I likely shot myself in the foot asking whether it was a library)