今日のiOS面接の質問に答えてください.

1278 ワード

今日面接のテーマを見て、少し面白いと思います.原題はこちら(回答にMacdownがサポートされていないので、別の文章で回答するしかありません)
最初は「<.>」を正則的に置き換えることで問題を解決できると思っていたが、問題が要求する<>間の最短距離は、正則式の最短マッチングの概念ではなく、正則では「<.>」に合致するが、題意に合致せず、題意要求が一致する。また逆マッチングを考えてみたらどうですか?その後、逆マッチングはまたa>b>c>の2つの困難な状況に遭遇する。などである.
正則の達人に教えてもらいたい.正則マッチングは可能ですか?
仕方なく自分で複雑なアルゴリズムを書くしかありません.
- (NSString *)myTrimString:(NSString *)from {
    static NSString *startFlag = @"";
    
    NSMutableString *result = [from mutableCopy];
    // find the start flag
    NSRange startRange = [result rangeOfString:startFlag];
    while (startRange.location != NSNotFound) {
        CGFloat remainIndex = startRange.location + startRange.length;
        NSRange remainRange = NSMakeRange(remainIndex, result.length-remainIndex);
        // search from the remaining text
        NSRange endRange = [result rangeOfString:endFlag options:0 range:remainRange];
        if (endRange.location != NSNotFound) {
            // try to locate the last one 

ちなみに、元の問題のテスト例を上げます.
@"3<4<55>4>3/c>eee";

賞なしでBUGを捕まえるのを歓迎します~~
BTW:時間があればFunctionalのアイデアでもう一度実現してみてどんな感じになるか見てみましょう.