老探长早年丧失爱人,难过宗旨境非凡扭曲决定建设和谐社会,纠集以色列德国治镇论者建立马甲幕后黑手制,杀人越货谎称事故频发、为了“越来越高的善”——偶语于道路者弃市,所谓田园风光、与世隔绝,黑牢中死尸枕籍,何异暴秦?
大城市来的公心警探带来了改善春风,阿夫乐尔号的一声炮响,给桑福德小镇送来了社会主义。幸福的幻象被凶暴击碎,壹玖八二暴虐现出真相。砰砰砰砰,压在小镇居民身上的3座大山终于被推翻,原来号称推广着幸福人生的人们最凶险。

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/
必发365娱乐官网,5、本片,hot fuzz
……nnd,想不起来了

原题地址

又,听他们说本片戏仿经典无数,笔者眼拙只见到“妖夜荒踪”。
关于最后真相,“他不是壹人在打仗”,又让自家想起阿加莎Christie经典随笔《东方快车谋杀案》——踩在巨人的双肩上也不便于,后人总是觉得你的当下会有巨人

此题马虎为找到,字典序的下2个纤维种类。

再,这一个评价写得比自个儿那篇好多了,我们都看望啊: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]。

相关文章