Go Back   Armenian Knowledge Base > Technical sections > Languages, Compilers, Interpreters > Algorithms

Reply
 
Thread Tools

Yet another interview puzzle (anagrams)
Old 27.01.2014, 19:17   #1
Ego coder
 
AvDav's Avatar
 
Join Date: 07 2004
Location: Yerevan, Armenia
Age: 44
Posts: 3,738
Rep Power: 5
Default Yet another interview puzzle (anagrams)

Часто задаваемая задача при интервью:
Проверка строк на идентичность. То есть, выражаясь математическим языком, задача сводится к определению является ли одна строка конечной перестоновкой другой, такие строки называются анаграмами.

Пример:
торс
сорт
трос
рост

Наиболее оптимальным решением мне видется следующая реализация:

Code:
#include <algorithm>
#include <iostream>
#include <string>
 
typedef unsigned int uint;
 
inline bool notZero(uint n) {
    return n!=0;
}
 
bool areAnagrams(const std::string& s1, const std::string& s2) {
    uint hist[256] = {0};
    if(s1.length() != s2.length()) return false;
    for(std::string::const_iterator i = s1.begin(), j = s2.begin(); i != s1.end(); ++i, ++j) {
        ++hist[(uint)*i];
        --hist[(uint)*j];
    }
    return std::find_if(hist, hist + 256, notZero) == hist + 256;
}
 
int main() {
    std::cout << areAnagrams("google", "elgoog");
}
Если есть непонятки в реализации спрашиваете - разъясню.
Шкурой чую, что оптимальнее переписать - мёртвый номер.
Так, что особо пытливым умам предлагается просто переписать иначе.
__________________
Каждый сам кузнец своего счастья, и несчастья тоже.
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
Interview (in french) arabaliozian Comments 0 28.11.2009 20:04
interview arabaliozian Comments 0 16.08.2008 16:49
The Interview with God PsilocybeLarvae English Only 5 29.11.2005 16:56
[JAVA GAME MOTOROLA VXX] Puzzle Bobble acid Mobile Phones and Gadgets 0 25.07.2005 20:16
Fallout 3 interview Yerkanian Games 0 18.07.2002 18:40


Реклама:
реклама
Buy text link .

All times are GMT. The time now is 04:37.
Top

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.