zoukankan      html  css  js  c++  java
  • 字典序,求给定字符串的下一个

    POJ 1146 ID Codes 

    给定字符串有26个小写字母组成,求出给定字符串的下一个。

    算法简述:

    对于字符数组chararray,从字符串末尾向前找到第一个chararray[index]<chararray[index-1],然后找到index之后的字符中最后一个大于chararray[index-1],记为position,小于chararray[index]的字符。然后交换chararray[index-1]和chararray[position]。对index及其以后的字符从小到大排序即可。

    代码:

    import java.util.Scanner;

    public class Main {

    public static void next(String str)
    {
    char[] chararray = str.toCharArray();
    int length=str.length();
    int count=length-1,i=0;
    while(count>0)
    {
    if(chararray[count]>chararray[count-1])
    {
    break;
    }
    count--;
    }
    if(count==0)
    {
    System.out.println("No Successor");
    return;
    }
    int midindex=count;
    int leftindex=count;
    for(i=midindex;i<length;i++)
    {
    if((chararray[i]>chararray[midindex-1])&&(chararray[i]<chararray[midindex]))
    {
    leftindex=i;
    }
    }
    char node = chararray[leftindex];
    chararray[leftindex]=chararray[midindex-1];
    chararray[midindex-1]=node;
    int minindex=0;
    for(i=count;i<length-1;i++)
    {
    minindex=i;
    for(int j=i+1;j<length;j++)
    {
    if(chararray[j]<chararray[minindex])
    {
    minindex=j;
    }
    }
    if(minindex!=i)
    {
    node = chararray[minindex];
    chararray[minindex]=chararray[i];
    chararray[i]=node;
    }
    }
    str = new String(chararray);
    System.out.println(str);
    }
    public static void main(String[] arg0)
    {
    @SuppressWarnings("resource")
    Scanner sc1 = new Scanner(System.in);
    while(true)
    {
    String str = sc1.nextLine();
    if(str!=null&&str.equalsIgnoreCase("#"))
    {
    break;
    }
    next(str);
    }
    }
    }

  • 相关阅读:
    WCF+EntityFramework+mysql总结
    实现Win7远程桌面关机和重启
    EF 4.1 一些操作
    Ado.net利用反射执行SQL得到实体
    .net IL 指令速查
    VS2010 /VC/bin/rcdll.dll 无法找到资源编译器
    Win7下 httpRequest带证书请求https网站
    VS2010 自动关闭的问题解决方法
    Android 之 悬浮窗口
    论 Java 中获取一组不重复的随机数之性能问题
  • 原文地址:https://www.cnblogs.com/earendil/p/4194375.html
Copyright © 2011-2022 走看看