假如有字符串:
String source="By Matt Spetalnick and Andrea Shalal-Esa. WASHINGTON | Fri Aug 23, 2013 11:27 EDT. WASHINGTON (Reuters) - The United States on Friday was repositioning naval forces in the Mediterranean to give President Barack Obama the option for an armed .he looked down,He saw his own shadow reflected in the water beneath."
问题:把source从第N句第M个单词开始,每隔K个单词去掉其字符数的1/2.
如:从第二句第一个单词开始,每隔2个单词的去掉其1/2。上面变成:WASHI | Fri Aug 23, 2013 11:27 ED .WASHINGTON (Reuters) - TH United States O..........求:实现的思路或者代码?string单词算法java

解决方案 »

  1.   

    @fudongrifdr感觉好麻烦啊,好多判断。分割还要考虑到数字,逗号,句号之类的
      

  2.   

    String 其实就是 char[].按数据的思路去操作你的这个问题,应该不是很难了吧!
      

  3.   

    花了点时间写了一下,不过还是存在一下的一些问题
    /**
     * 存在的问题:
     * 1,无法区分问号,感叹号等句子
     * 2,类似于 "this this's 都统统死掉(指截取的时候会把逗号截取,会把这些符号当做一个字母)
     * 3,从第几个单词开始,每隔第几个单词抠词,是针对每一句的,而非全文 
     * 4,每隔gap单词抠词,但是如果刚好遇到数字,单个字母,虽然能跳过,但是,这是跳过了2倍gap开始扣词
     */
    public Map<Integer, String> resolveQuestion(String content, GameRule rule){
    StringBuffer resultContent = new StringBuffer();
    Map<Integer, String> qMaps = new HashMap<Integer, String>();
    // 只能按句号截取,如果按问号,感叹号的话,最后就不能append
    String[] sentences = content.split("\\.");
    int whichSentence =rule.getWhichsentence();
    int whichword=rule.getWhichword();
    int i = 0;
    int gap=2;
    int sort = 1; // 试题序号
    for (String sentece : sentences) {
    if (whichSentence-1 <= i) { // 第一句不处理
    String[] words = sentece.trim().split("\\ ");
    int j = 1;
    for (String word : words) {
    // if (1 != j && j % 2 == 0 && word.length() > 1
    if ( (j-whichword)%(gap+1)==0&& word.length() > 1
    && sort <= rule.getWordcount()) { // 从第whichword个单词开始,并且单词长度大于1,并且生成的小题数量小于等于规定的小题数
    if (word.indexOf(",") != -1) {
    word = word.substring(0, word.length() - 1);
    }
    int len = word.length() % 2 == 0 ? word.length() / 2
    : word.length() / 2 + 1;
    String disWord = word.substring((word.length() - len));
    String viewWord = word.replace(disWord, "____");
    if (word.lastIndexOf(",") != -1) {
    resultContent.append(viewWord).append(", ");
    } else {
    resultContent.append(viewWord).append(" ");
    }
    qMaps.put(sort, word);
    sort++;
    } else {
    resultContent.append(word).append(" ");
    }
    j++;
    }
    resultContent.append(". ");// 句子结束
    }else{
    resultContent.append(sentece).append(". ");
    }
    i++;
    }
    System.out.println(resultContent.toString());
    qMaps.put(0, resultContent.toString()); // 将显示试题添加到MAP
    // System.out.println(qMaps.get(0));
    return qMaps;
    }