PKU 1537-Identifying Legal Pascal Real Constants
問題概要
ある実数が正しい実数か判定せよ
解法
整数を抽出関数を作りそれを組み合わせる.
実装(Java)
import java.util.*; import java.math.*; import java.io.*; import java.util.regex.*; import static java.lang.Math.*; import static java.util.Arrays.*; import static java.lang.System.*; public class Main { Scanner input; int nextval(String s,int x){ if(x>=s.length())return -1; if(s.charAt(x)=='+'||s.charAt(x)=='-')x++; if(x>=s.length())return -1; if(s.charAt(x)>='0'&&s.charAt(x)<='9'); else return -1; while(x<s.length()&&s.charAt(x)>='0'&&s.charAt(x)<='9')x++; return x; } void run(){ input=new Scanner(System.in); while(input.hasNext()){ String s=input.next(),back=s; s=s.toLowerCase(); if(s.equals("*"))break; int j=0; Boolean ans=false; j=nextval(s,j); if(j==-1){ ans=false; }else{ if(j<s.length()&&s.charAt(j)=='.'){ j++; ans=true; j=nextval(s,j); } if(j!=-1&&j<s.length()){ if(s.charAt(j)=='e'){ j++; ans=true; j=nextval(s,j); } } } if(ans&&j==s.length()){ printf("%s is legal.\n",back); }else{ printf("%s is illegal.\n",back); } } } void printf(String format,Object... args){ System.out.printf(format, args); } public static void main(String[] args) { new Main().run(); } }