题目要求:

  对于一个输入的字符串(26个小写字母组成),求出他的所有子串中元音开头,辅音结尾的子串。在这所有的子串中,输出第一个和最后一个。

  例如aab,共有子串a,aa,aab,ab,b;但是满足元音开头,辅音结尾的子串有aab,ab.

  预备知识:元音字母:a,o,e,i,u,其他均为辅音字母。

解题思路:

  1、首先创建一个元音字母集合yuanChars;一个辅音字母集合fuChars;

  2、For 遍历这个字符串,

      当前字母是辅音时,continue;//子串要求必须元音开头

      当前字母是元音是,then

        for 遍历后面的字符串;

          if 字母是元音,continue;//子串结尾字母必须辅音

          else 将子串添加到结果集合中

          end if

        end for

    end For

 这个算法只能测试通过部分示例,也就是说算法是可以优化的;时间复杂度可以降低,目前暂没考虑怎么降低,代码如下:

import java.util.HashMap;
import java.util.TreeSet; public class StringSequence {
public static void main(String[] args) {
String string="aab";//output:aab,ab
TreeSet<Character> allChars=new TreeSet<>();
for (int i = 97; i < 123; i++) {
allChars.add((char)i);
}
//System.out.println(allChars); TreeSet<Character> fuChars=allChars;
fuChars.remove('a');
fuChars.remove('o');
fuChars.remove('e');
fuChars.remove('i');
fuChars.remove('u');
//System.out.println(fuChars); TreeSet<Character> yuanChars=new TreeSet<>();
yuanChars.add('a');
yuanChars.add('o');
yuanChars.add('e');
yuanChars.add('i');
yuanChars.add('u');
//System.out.println(yuanChars);
// 截止目前,fuChars存放輔音字符;yuanChars存放元音字母 HashMap<Integer, String> result=new HashMap<>(); for (int i = 0; i < string.length(); i++) {
char temp=string.charAt(i); //如果不以元音字母開頭,直接退出
if(!yuanChars.contains(temp)){
continue;
} //辅音字母开头
for (int j = i+1; j < string.length(); j++) {
char point=string.charAt(j);
if (!fuChars.contains(point)) {
continue;
}
else {
String subStr=string.substring(i, j+1);//因为包括i;不包括j+1 result.put(result.size(), subStr);
//System.out.println(subStr);
}
}
} if (result.size()!=0) {
System.out.println(result.get(0));
System.out.println(result.get(result.size()-1));
} }
}

“凯易迅Calix”实习上机——求元音开头辅音结尾的子串的更多相关文章

  1. “凯易迅Calix”实习上机——打折问题

    题目要求: 题目记得不太清楚,大概的意思是一个商店的打折方案如下:设一个客户买了n个商品,价格分别是p1,p2,...,pn (1)第一个商品不打折,即cost=p1; (2)第i个商品的折扣d=mi ...

  2. python爬虫:爬取易迅网价格信息,并写入Mysql数据库

    本程序涉及以下方面知识: 1.python链接mysql数据库:http://www.cnblogs.com/miranda-tang/p/5523431.html   2.爬取中文网站以及各种乱码处 ...

  3. 算法练习:求字符串的最长重复子串(Java实现)

    1. 求字符串的最长重复子串 例如:aaaaaaaaabbbbcccaaassscvvv这里面的最长重复子串为aaaaaaaaa 算法思路:算法时间复杂度(O(n)) 1. 将这一个字符串先转成cha ...

  4. 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数

    目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...

  5. Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量

    给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母. 元音字母包括 a, e, i, o, u,共五个,其他均为辅音字母. 输入格式 输入一行,包含一个单词,单词中只包含小写英文字母. 输 ...

  6. 牛一网ecshop家电数码模板(仿易迅网)for ecshop 2.7.3

            本模板尤其适用于家电数码行业. 本模板已经开发.测试完毕,并开放演示. 本模板支持全站静态.销售数量后台自定义.首页商品独立图片.品牌独立展示.商品精美团购.宽屏窄屏自动识别并切换.分 ...

  7. POJ 1743 Musical Theme (后缀数组,求最长不重叠重复子串)(转)

    永恒的大牛,kuangbin,膜拜一下,Orz 链接:http://www.cnblogs.com/kuangbin/archive/2013/04/23/3039313.html Musical T ...

  8. poj1743 Musical Theme 后缀数组的应用(求最长不重叠重复子串)

    题目链接:http://poj.org/problem?id=1743 题目理解起来比较有困难,其实就是求最长有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1 ...

  9. 【面试笔试算法】Problem 9: 腾讯2016年研发实习笔试题:最长回文子串

    (一)题目 问题:求给定字符串s的回文(palindrome)子串中,长度最大的回文子串的长度. 回文(palindrome)是指从左往右读和从右往左读字符串,看到的字符串都是一样的.比如" ...

随机推荐

  1. Java Tomcat 启动闪屏-原因之一---配置问题

    如Tomcat启动异常,首先确保Java安装和Tomcat安装版本是否对应,环境变量是否配置正确,如检查通过后,依然启动闪屏.可以依次解决: 1.在Tomcat启动文件Startup.bat之中最后添 ...

  2. 基于openssl的https服务配置

    环境: CA服务器:192.168.1.121 WEB服务器: 192.168.1.107 一.在CA服务器上生成自签证书 1.生成根私钥 (umask 077;openssl genrsa -out ...

  3. 【集中工作薄】 当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中

    功能:当前文件夹中所有Excel文件中 多个工作簿的第一个工作表 复制到工作簿中 Sub Books2Sheets() '定义对话框变量 Dim fd As FileDialog Set fd = A ...

  4. hdu1071(定积分求面积)

    太弱了,写了一下午,高中基础太差的孩子伤不起... 记住抛物线是关于x轴对称的. 而且抛物线的方程可以是: y=k(x-h)+c  //其中(h,c)为顶点坐标 The area Time Limit ...

  5. rimraf删除gulp的模块插件

    1.安装:npm install -g rimraf(全局安装),如果安装了cnpm,也可使用cnpm install -g rimraf 命令 2.使用:先定位目标文件夹的父级目录,然后命令行输入r ...

  6. 文艺青年、普通青年、2b青年到底是什么意思?

    文艺青年.普通青年.2b青年到底是什么意思? 文艺青年就是脑子里跟别人想的不一样,思维跟人家相反或者另类的人. 普通青年呢就是像你一样,普普通通的. 2B青年就是黑铅笔青年,做事比较搞怪,古怪到让你哭 ...

  7. 飘城旅游网pc,流式,响应式布局

    相关视频教程http://pan.baidu.com/s/1o77wirK 我的源码链接:http://pan.baidu.com/s/1czTsKI

  8. HDU2604—Queuing

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 题目意思:n个人排队,f表示女,m表示男,包含子串‘fmf’和‘fff’的序列为O队列,否则为E ...

  9. What’s wrong with virtual methods called through an interface

    May 31, 2016 Calling a virtual method through an interface always was a lot slower than calling a st ...

  10. python 简单的文件下载

    需要使用urllib2库 import urllib2def download(url, szFileName = ""): #szFileName:下载文件到的目标路径 if s ...