检查输入(字符串)是否具有罗马数字

时间:2018-11-06 01:59:02

标签: c++ arrays boolean

一个函数,它接受一个字符串作为输入,如果该字符串仅包含一个字符串,则返回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;
  } 
 }

3 个答案:

答案 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 }
}