Java 这个元音问题怎么了?索引外
我正在做一项家庭作业,即:Java 这个元音问题怎么了?索引外,java,algorithm,Java,Algorithm,我正在做一项家庭作业,即: 在字符串中查找一个唯一的元音,该元音前面有一个辅音,该辅音前面有一个元音 示例:“eeaaAOEacafu” 结果是:u 我已经做了: 主类 public class Principal { public static void main(String[] args) { // TODO Auto-generated method stub Stream str = new Stream(); str.set
public class Principal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Stream str = new Stream();
str.setText("eeaaAOEacafu");
System.out.println(str.returnChar(str.getVowel()));
}
流类
public class Stream {
String text;
char vowel;
public String getText() {
return texto;
}
public void setText(String text) {
this.text = text;
}
public char getVowel() {
return vowel;
}
public void setVowel(char vowel) {
this.vowel = vowel;
}
public boolean isVowel(String str) {
str = str.toLowerCase();
for(int i=0; i<str.length(); i++) {
char c = str.charAt(i);
if(c=='a' || c=='e' || c=='i' || c=='o'|| c=='u') {
return true;
} else {
return false;
}
}
return false;
}
public char returnChar(String str) {
char last;
char next;
char result = '0';
int j=1;
for(int i=0; i<str.length(); i++) {
last = str.charAt(i-1);
next = str.charAt(i+1);
j++;
if(!vogal(str.charAt(i))) {
if(vogal(last) && vogal(next)) {
result = next;
}
}
}
this.setVowel(result);
return result;
} }
公共类流{
字符串文本;
字符元音;
公共字符串getText(){
返回texto;
}
公共void setText(字符串文本){
this.text=文本;
}
公共字符元音(){
返回元音;
}
公共无效设置元音(字符元音){
这个。元音=元音;
}
公共布尔IS元音(字符串str){
str=str.toLowerCase();
对于(int i=0;i使用正则表达式进行测试并定位字符
[aeiouAEIOU][BCDFGHJKLMNNPQRSTVWXYZBCDFGHJKLMNPQRSTVWXYZ]([aeiouAEIOU])
使用字符串作为一个廉价的映射来跟踪你已经看到的元音。另外,记下你遇到的连续辅音的数量。然后,当你在一个你以前没有看到的元音前面加上一个辅音时,你就找到了答案
public static void main(String[] args)
{
String s = "eeaaAOEacafu".toLowerCase();
int consCount = 0;
String seenVowels = "";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
if("aeiou".indexOf(c) >= 0)
{
if(seenVowels.indexOf(c) == -1)
{
if(consCount == 1)
{
System.out.println("Result: " + c);
break;
}
seenVowels += c;
}
consCount = 0;
}
else consCount++;
}
}
如果我们将“unique”理解为我们以前从未见过元音,则上述方法有效。如果输入字符串中的元音必须是唯一的,则情况会更复杂一些。现在我们必须跟踪符合原始标准的每个元音,但如果随后遇到同一元音的另一个实例,则删除解决方案。
下面是一些代码来说明:
public static void main(String[] args)
{
String s = "afuxekozue".toLowerCase();
int consCount = 0;
String seenVowels = "";
String answer = "";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
if("aeiou".indexOf(c) >= 0)
{
if(seenVowels.indexOf(c) == -1)
{
if(consCount == 1)
{
answer += c;
}
seenVowels += c;
}
else if(answer.indexOf(c) >= 0)
{
answer = answer.replaceAll(String.valueOf(c), "");;
}
consCount = 0;
}
else consCount++;
}
if(answer.length() > 0)
System.out.println("Result: " + answer.charAt(0));
}
如果有多个元音满足这个条件,那么我们的输出应该是什么呢(int i=1;i@Rafa,或者您想返回满足条件的第一个元音?@zenwraight满足条件的第一个元音。@MBo谢谢您,我现在将实现它,但正如您所说,有一个唯一的条件。我以前从未使用过正则表达式。正则表达式是Java的API吗?因为我必须在没有API的情况下实现它s、 纯java。只是这个“aca”问题我忽略了这一部分。这可能被认为是一个api,因为你不需要做任何工作,只需要找出所需的模式。使用正则表达式并不能解决“唯一元音”部分。您仍然需要跟踪以前看到的元音。我认为这不起作用。如果字符串是“afuxekoze”
,你的代码返回什么?正确答案应该是o
,但我认为你的代码将返回e
。它返回u
。我认为unique的意思是我们以前没有见过元音。我不认为o
是正确答案,但我可能遗漏了什么。你是对的。我的例子是wrong.“afuxekozue”
?不清楚“unique”是指我们以前没有见过元音,还是元音在字符串中唯一出现。谢谢Jim。我扩展了原始解决方案来处理unique的“字符串中唯一出现”解释。
public static void main(String[] args)
{
String s = "afuxekozue".toLowerCase();
int consCount = 0;
String seenVowels = "";
String answer = "";
for(int i=0; i<s.length(); i++)
{
char c = s.charAt(i);
if("aeiou".indexOf(c) >= 0)
{
if(seenVowels.indexOf(c) == -1)
{
if(consCount == 1)
{
answer += c;
}
seenVowels += c;
}
else if(answer.indexOf(c) >= 0)
{
answer = answer.replaceAll(String.valueOf(c), "");;
}
consCount = 0;
}
else consCount++;
}
if(answer.length() > 0)
System.out.println("Result: " + answer.charAt(0));
}
Result: o