一个函数,它接受一个字符串作为输入,如果该字符串仅包含一个字符串,则返回true 罗马数字,否则为false。回想一下,罗马数字是M,D,C,L, X,V和I。
这是我到目前为止所拥有的
bool isRoman(string str, char key)
{
assert(str.length() > 0)
if(length[i] == key)
{
return i;
}
}
答案 0 :(得分:1)
不使用额外标准库的演示。
#include <stdexcept>
#include <cctype>
#include <string>
using namespace std;
bool isRoman(string s){
if(s.empty()){
throw std::runtime_error("Got empty string");
}
bool isAllRoman = true;
for(const auto& c: s){
if(isspace(c)) //if you need to skip whitspace
continue;
if(!(c == 'M' || c == 'D' || c == 'C' ||
c == 'L' || c == 'X' || c == 'V' || c == 'I')){
isAllRoman = false;
break;
}
}
return isAllRoman;
}
如果您有任何不明白的地方,请发表评论。
答案 1 :(得分:1)
如果只想知道std::string
是否仅包含一组特定的有效字符中的值,则可以使用std::string::find_first_not_of
。这使您的功能成为一线工作:
bool isRoman(const std::string &str)
{
return !str.empty() && str.find_first_not_of("MDCLXVI") == std::string::npos;
}
答案 2 :(得分:-1)
import javax.persistence.*;
public class T53151410
{
public static void main(String[] args)
{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("objectdb:db.tmp;drop");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(new MyEntity());
em.getTransaction().commit();
em.getTransaction().begin();
System.out.println(
em.createQuery("UPDATE MyEntity SET color = :color")
.setParameter("color", Color.RED.name()).executeUpdate()
);
em.getTransaction().commit();
System.out.println(
em.createQuery("SELECT FROM MyEntity WHERE color = :color")
.setParameter("color", Color.RED).getResultList().size()
);
em.close();
emf.close();
}
@Entity
private static class MyEntity
{
@Enumerated(EnumType.STRING) Color color;
}
private static enum Color { RED, GREEN, BLUE }
}