老探长早年丧失爱人,悲伤中央理万分扭曲决定建设和谐社会,纠集以色列德国治镇论者建立马甲幕后黑手制,杀人越货谎称事故频发、为了“更加高的善”——偶语于道路者弃市,所谓田园风光、杜门不出,黑牢中死尸枕籍,何异暴秦?
大城市来的诚心警探带来了革新春风,阿夫乐尔号的一声炮响,给桑福德小镇送来了社会主义。幸福的幻象被严酷击碎,一9八三残酷现出精神。砰砰砰砰,压在小镇居民身上的三座大山终于被赶下台,原来号称推广着甜丝丝人生的人们最凶险。

heckerrank 算法题。

华夏到现在如故世外桃源主义大行于道,城市被大千世界看作樊笼桎梏,动不动就矫情地要回归大自然、向往着田园和故里——冯导当年在《甲方乙方》里精美地讽刺过了,没悟出现今还有如此几个人坚定不移撒强迫症。
与天朝上国差别,英美今昔的不计其数经济学影视文章中,小镇和乡下遭到了残暴的冷嘲热讽,当然那和领导权驾驭在源点大城市和当作当代工业的大手笔、制片人以及电影工业有关,甚或只可是是更有利于成为1些电影的背景条件——可是话语权的归属自个儿就已经看清了城市和乡村之间优劣至少是胜负或技巧的轻重。粗略想了须臾间,作为妖妖怪怪的小镇在以下经济学影视文章中都有表现:
壹、《小城畸人》http://www.douban.com/subject/2038364/
2、House of Wax
http://www.douban.com/subject/1309184/
三、一部在情人家里看的片子,现代片,开首是五个人迷失到了三个小镇,1番打杀之后好轻便逃了出来,片尾是他俩又二次驾乘到了这几个小镇,典故于是循环往复。
4、Dogville
http://www.douban.com/subject/1298759/
5、本片,hot fuzz
……nnd,想不起来了

原题地址

又,听大人讲本片戏仿杰出无数,作者眼拙只看到“妖夜荒踪”。
至于最后真相,“他不是一人在战斗”,又让本人纪念阿加莎Christie精粹随笔《东方快车谋杀案》——踩在巨人的肩头上也不便于,后人总是以为你的当前会有巨人

此题大要为找到,字典序的下一个细微体系。

再,那些评价写得比小编那篇许多了,大家都看望吧:http://www.douban.com/review/1156203/

input

dhck
dkhc

output

dhkc
hcdk

经过代码

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

string rever(string str, int index ){

    string temp = str.substr(index+1);

    int length = temp.length();
    for(int i = 0 ; i< length / 2;i++){
        char aa = temp[i];
        temp[i] = temp[length-i-1];
        temp[length-i-1] = aa;
    }
    string result = str.substr(0,index+1) + temp;
    return result;
}
void handle(string str){
    if( str.length() == 1 ){
        cout<<"no answer"<<endl;
        return;
    }
    int flag = 0;
    int length = str.length();
    string result;
     for( int i = length - 2 ; i >= 0 ; i-- ){
        if( str[ i ] < str[ i + 1 ] ) {

            for( int j = i + 1 ; j < length ; j++ ){
                if( str[i] < str[j] && (!str[j+1]||str[i] >= str[j+1])){
                    char temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                    cout<<str<<endl;
                    result = rever(str,i);
                    break;
                }
            } 
            flag = 1;
            break;
        }

     }
     if( flag == 1 ) {
        cout<<result<<endl;
     }else{
        cout<<"no answer"<<endl;
     }

}

int main() {
    int count = 0;

    cin>>count;
    string s[count];
    for( int i = 0 ; i < count ; i++ ){
        cin>>s[i];
        handle(s[i]);
    }

    return 0;
}

本人的解题思路

第2此题的难处正是找到最小的下一个字典序,所以,作者从三个字符串的最终往前,举办遍历。

for( int i = length - 2 ; i >= 0 ; i-- )

如果str[i] < str[i+1],找到须求更换的子字符串。为str[i,length)

if( str[ i ] < str[ i + 1 ] ) {

            for( int j = i + 1 ; j < length ; j++ ){
                if( str[i] < str[j] && (!str[j+1]||str[i] >= str[j+1])){
                    char temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                    cout<<str<<endl;
                    result = rever(str,i);
                    break;
                }
            } 
            flag = 1;
            break;
        }

// 从[i+1,length) 找到大于str[i],如果有多于一个字符大于str[i],那么就找到最小的哪一个。和str[i],进行交换。最后将str[i+1,length]rever,替换之前的str[i+1,length]。

相关文章