一個數(shù)組元素重新排序問題

問題##

最近在工作中遇到一個比較有意思的問題,根據(jù)相關(guān)業(yè)務(wù)邏輯抽象后可以轉(zhuǎn)換為以下問題模型瞭亮。

現(xiàn)有一個初始化數(shù)組為array蝗茁,需要處理后的結(jié)果為result數(shù)組。
規(guī)則為:將值相同且個數(shù)大于1的元素(這些元素有一些相同的特征嫂易,如下例中的元素均以字母v開始,并且會連續(xù)出現(xiàn))添加到一個新數(shù)組中以替換原來的元素并要求最終數(shù)組的元素相對順序與原始數(shù)組一致掐禁。
array:{a,v1,v1,v4,v4,b,v2,v2,v5,v5,c,v3,v3}
result:{a,{v1,v1},{v4,v4},b,{v2,v2},{v5,v5},c,{v3,v3}}

思路##

需要解決該問題的關(guān)鍵是需要處理值相同的元素怜械,并需要保證這些元素的結(jié)果數(shù)組中的相對順序。要實現(xiàn)此目的需要將原始數(shù)組進行拆分處理傅事,將符合條件的值相同的元素保存在一個臨時數(shù)組中缕允,創(chuàng)建一個空的結(jié)果數(shù)組,在每次循環(huán)處理原始數(shù)組時將值相同的元素添加到臨時數(shù)組中蹭越,添加臨時數(shù)組和不重復(fù)元素到結(jié)果數(shù)組中障本,具體實現(xiàn)可以參考下面的OC代碼,其它語言實現(xiàn)方式類似响鹃。

代碼##

    //初始化原始數(shù)組
    NSMutableArray *originArray = [NSMutableArray array];
    [originArray addObject:@"a"];
    [originArray addObject:@"v1"];
    [originArray addObject:@"v1"];
    
    [originArray addObject:@"v4"];
    [originArray addObject:@"v4"];
    
    [originArray addObject:@"b"];
    [originArray addObject:@"v2"];
    [originArray addObject:@"v2"];
    [originArray addObject:@"v5"];
    [originArray addObject:@"v5"];
    
    [originArray addObject:@"c"];
    [originArray addObject:@"v3"];
    [originArray addObject:@"v3"];
    
    //結(jié)果數(shù)組
    NSMutableArray *resultArray = [NSMutableArray array];
    
    //臨時數(shù)組
    NSMutableArray *tempArray = [NSMutableArray array];
    
    for (NSString *item in originArray) {
        
        if ([item hasPrefix:@"v"]){//是否有重復(fù)值
            
            if (tempArray.count > 0) {
                NSString *key = tempArray.lastObject;
                
                if ([item isEqualToString:key]) {//值相同加入臨時數(shù)組
                    [tempArray addObject:item];
                } else {//值不同加入結(jié)果數(shù)組并清空臨時數(shù)組
                    NSMutableArray *array = [NSMutableArray arrayWithArray:tempArray];
                    [resultArray addObject:array];
                    [tempArray removeAllObjects];
                    
                    //將當前元素加入臨時數(shù)組
                    [tempArray addObject:item];
                }
                
            } else {
                
                [tempArray addObject:item];
            }
            
        } else {//沒有重復(fù)值的元素
            if (tempArray.count > 0) {
                NSMutableArray *array = [NSMutableArray arrayWithArray:tempArray];
                [resultArray addObject:array];
                [tempArray removeAllObjects];
            }
            
            [resultArray addObject:item];
        }
    }
    
    //將最后一組重復(fù)值加入結(jié)果數(shù)組
    if (tempArray.count > 0){
        [resultArray addObject:tempArray];
       }
    NSLog(@"result:%@",resultArray);

輸出結(jié)果:

屏幕快照 2016-03-03 下午10.15.41.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驾霜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子茴迁,更是在濱河造成了極大的恐慌寄悯,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堕义,死亡現(xiàn)場離奇詭異猜旬,居然都是意外死亡,警方通過查閱死者的電腦和手機倦卖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門洒擦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怕膛,你說我怎么就攤上這事熟嫩。” “怎么了褐捻?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵掸茅,是天一觀的道長椅邓。 經(jīng)常有香客問我,道長昧狮,這世上最難降的妖魔是什么景馁? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮逗鸣,結(jié)果婚禮上合住,老公的妹妹穿的比我還像新娘。我一直安慰自己撒璧,他們只是感情好透葛,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卿樱,像睡著了一般僚害。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上殿如,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天贡珊,我揣著相機與錄音最爬,去河邊找鬼涉馁。 笑死,一個胖子當著我的面吹牛爱致,可吹牛的內(nèi)容都是我干的烤送。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼糠悯,長吁一口氣:“原來是場噩夢啊……” “哼帮坚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起互艾,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤试和,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后纫普,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體阅悍,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年昨稼,在試婚紗的時候發(fā)現(xiàn)自己被綠了节视。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡假栓,死狀恐怖寻行,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匾荆,我是刑警寧澤拌蜘,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布杆烁,位于F島的核電站,受9級特大地震影響简卧,放射性物質(zhì)發(fā)生泄漏连躏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一贞滨、第九天 我趴在偏房一處隱蔽的房頂上張望入热。 院中可真熱鬧,春花似錦晓铆、人聲如沸勺良。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尚困。三九已至,卻和暖如春链蕊,著一層夾襖步出監(jiān)牢的瞬間事甜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工滔韵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逻谦,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓陪蜻,卻偏偏與公主長得像邦马,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宴卖,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

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