算法題:找數(shù)組中最長(zhǎng)的單詞,該單詞由數(shù)組中其它單詞構(gòu)成耳幢。

//
// main.m
// wordslgest
//
// Created by tql on 2021/3/14.
//

import <Foundation/Foundation.h>

@interface Solution : NSObject

-(NSString *)longestWord:(NSArray *)aray;

@end

@implementation Solution

-(NSString *)longestWord2:(NSArray *)aray{

NSMutableArray *LongesWords = [NSMutableArray array];
NSInteger maxlength = 0;
for (NSString *word in aray) {
    if (word.length>maxlength) {
        maxlength = word.length;
    }
}

if (maxlength==0) {
    return  @"";
}
for (NSString *word  in aray) {
    if (word.length== maxlength) {
        
        [LongesWords addObject:word];
    }
}




[LongesWords sortUsingComparator:^NSComparisonResult(NSString * obj1, NSString * obj2) {
    
    return  [obj1 compare:obj2] ;
}];
    

return  LongesWords.firstObject;

}

  • (void) GetSubStr:(NSString)arayobj c:(NSString)str d:(NSString)str1 s:(NSString)str2{
NSArray *sepreateArray =  [ str componentsSeparatedByString:arayobj];
NSLog(@"now subcount  count =%hhd",sepreateArray.count);
if (sepreateArray.count==0) {
    *str1 = @"";
    *str2 = @"";
    
}else if (sepreateArray.count==1){
    if ([str hasPrefix:arayobj]) {
        *str1 = @"";
        *str2 = [str stringByReplacingOccurrencesOfString:@"" withString:arayobj];
        
    }else {
        *str1 = [str stringByReplacingOccurrencesOfString:@"" withString:arayobj];
        *str2 =  @"";
    }
    
}else if(sepreateArray.count==2){
    *str1 = sepreateArray[0];
    *str2 =  sepreateArray[1];
    
    
    
}else {
    
    
}

}

-(BOOL) Ifcontain:(NSArray)aray s:(NSString)str f:(BOOL)skip {

for (int i=0; i<aray.count; i++) {
    if ( [aray[i] isEqualToString:str])
    {
        NSLog(@"now the same str = %@, skip=%hhd",str,skip);
        if (skip==YES)
            break;
        else
        {
            return YES;
        }
    }
}
for (int i=0; i<aray.count; i++) {
    if ( [aray[i] isEqualToString:str])
    {
        NSLog(@"now the same str = %@, skip=%hhd",str,skip);
        if (skip==YES)
            continue;
    }
    if ([str containsString:aray[i]])
    {
        //NSArray *sepreateArray =  [aray[i] componentsSeparatedByString:str];
        NSString* str1, *str2;
        str1=@"";
        str2=@"";
       // NSString* str1Save, *str2Save;
        NSLog(@"find contain = %@ ",aray[i]);
        [self GetSubStr:aray[i] c:str d:&str1 s:&str2];
        
        
        NSLog(@"str1 = %@ strmid=%@ str2 = %@",str1,aray[i], str2);
        
        BOOL skp = NO;
       // if ( [str1 isEqual:str] || [str2 isEqual:str])
        //    skp = YES;
        
        if (![str1 isEqual:@""] && ![self Ifcontain: aray s:str1  f:skp]){
            NSLog(@"Now NO str1 = %@ ",str1);
            return NO;
        }
        else if ([str2 isEqual:@""] || [self Ifcontain: aray s:str2 f:skp])
        {
            NSLog(@"Now find it ! str1 = %@ strmid = %@ str2 = %@",str1,aray[i], str2);
            return YES;
        }
    }
    
}

return NO;

}

-(NSString *)longestWord:(NSArray *)aray{

if (aray.count==0) {//數(shù)據(jù)空
    return @"";
}
NSMutableArray *sortArray = [aray sortedArrayUsingComparator:^NSComparisonResult(NSString * obj1, NSString * obj2) {
    if (obj1.length==obj2.length) {
        return  [obj1 compare:obj2];
    }
    return  obj1.length < obj2.length ? NSOrderedAscending : NSOrderedDescending;
}];

NSLog(@"%@",sortArray);

NSInteger firslenght = [sortArray[0] length];
NSInteger lastlenght = [[sortArray lastObject] length];
if (firslenght==lastlenght) {//全部一樣長(zhǎng)
    return  sortArray.firstObject;
}


BOOL find = NO;
/* */
NSString *result = @"";
for (NSInteger i = sortArray.count - 1; i > 0; i--) {
    
    NSString *currentString = sortArray[i];
    NSLog(@"最外層 currentString =%@",currentString);
    NSInteger currentIndx = 0;
    
    /*
    for (NSInteger j = i- 1; j>=0; j--) {
        currentIndx = j;
        NSString *compareString = sortArray[j];
        NSLog(@"內(nèi)層:%@",compareString);
        
        while  ([currentString containsString:compareString]) {
            
            currentString = [currentString stringByReplacingOccurrencesOfString:compareString withString:@""];
            
            NSLog(@"余下的:::%@",currentString);
            j = i - 1;
            if ([currentString isEqualToString:@""] ) {
                find = YES;
                break;
            }else if (currentString.length <= firslenght){
                find = NO;
                j = currentIndx -1;
                currentString = sortArray[i];
                break;
            }else if(j<0){
                j = currentIndx -1;
                currentString = sortArray[i];
                break;
            }
        }
       
        if (find) {
            break;
        }
        
    }
     */
    
     find = [self Ifcontain:sortArray s:(sortArray[i]) f:YES];
    if (find) {
        result =  sortArray[i];;
        break;
    }
    
    
}

return  result;


return  @"";

}

@end

int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");

    Solution *so = [Solution new];
    //NSArray *words = @[@"apple",@"iOS",@"dog",@"nana",@"nzn",@"goodma",@"nznd",@"main",@"good",@"goodman",@"gooeman",@"goocman",@"goodmanznd"];
    NSArray *words = @[@"apple",@"iOS",@"dog",@"nana",@"nzn",@"goodma",@"nznd",@"main",@"good",@"goodman",@"gooeman",@"goocman",@"nzngoodmadog"];
    //NSArray *words = @[@"apple",@"iOS",@"dog",@"nana",@"nzn",@"goodma",@"nznd",@"main",@"good",@"goodman",@"gooeman",@"goocman",@"goodmanzndm",@"ain",@"goodmanzndmain"];
 NSString *result =     [so longestWord:words];
    NSLog(@"result== %@",result);
    
    
}
return 0;

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子睛藻,更是在濱河造成了極大的恐慌启上,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店印,死亡現(xiàn)場(chǎng)離奇詭異冈在,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)按摘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門包券,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炫贤,你說我怎么就攤上這事溅固。” “怎么了兰珍?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵侍郭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我俩垃,道長(zhǎng)罐盔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任裕照,我火速辦了婚禮显晶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跃闹。我一直安慰自己嵌削,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布望艺。 她就那樣靜靜地躺著苛秕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪找默。 梳的紋絲不亂的頭發(fā)上艇劫,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音惩激,去河邊找鬼店煞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛风钻,可吹牛的內(nèi)容都是我干的顷蟀。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼骡技,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鸣个!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤囤萤,失蹤者是張志新(化名)和其女友劉穎昼窗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阁将,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膏秫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了做盅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缤削。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吹榴,靈堂內(nèi)的尸體忽然破棺而出亭敢,到底是詐尸還是另有隱情,我是刑警寧澤图筹,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布帅刀,位于F島的核電站,受9級(jí)特大地震影響远剩,放射性物質(zhì)發(fā)生泄漏扣溺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一瓜晤、第九天 我趴在偏房一處隱蔽的房頂上張望锥余。 院中可真熱鬧,春花似錦痢掠、人聲如沸驱犹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雄驹。三九已至,卻和暖如春淹辞,著一層夾襖步出監(jiān)牢的瞬間医舆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工象缀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留彬向,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓攻冷,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親遍希。 傳聞我的和親對(duì)象是個(gè)殘疾皇子等曼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容