合法字符串

本文介绍了一个用于计算特定条件下合法字符串数量的C++程序。该程序通过递归和数组检查来确定符合长度和字符限制的有效字符串数目。文章包含了完整的源代码实现及运行示例。

【原创】合法字符串


// test.cpp : 定义控制台应用程序的入口点。  
// editor: Visual C++ 2010 express  
// system: win7 x32  
// create: 2013-07-29 15:20FM  
// author: jiang kejun <jinhua_k9@163.com>  
  
#include "stdafx.h"  
#include <string>  
#include <iostream>
#include <math.h>
using namespace std;  

int validstring(int n,int m);
bool in_array(string needle, string s[]);
int _tmain(int argc, _TCHAR* argv[])  
{   
    cout<<validstring(2,3)<<endl;
	cout<<validstring(3,4)<<endl;
    system("pause");  
    return 0;  
      
}  

string AZ="0abcdefghijklmnopqrstuvwxyz";
const int N=26;
int validstring(int n,int m)
{
	// 尾数长度
	int j=0;
	string ws[N];
	//string fws[N];
	// 截断长度
	int cut=0;
	// 非尾数长度
	double size=0.0;
	// 交换介质
	string tmp;
	for(int i=1;i<=n;i++){
		tmp = AZ.at(i);
		if(2*i>n){
			ws[j]=tmp;
			//fws[i]=tmp;
			j++;
			size++;
		}
		if(2*i<=n){
			
			if((i+1)>= 2*i && !in_array(tmp, ws)){
				//fws[i]=tmp;
				cut++;
				size++;
			}
		}
	}
	//int W=sizeof(ws);
	//int F=sizeof(fws);
	int C=int(pow(size, (m-1)));

	cut = (m-1<=2)?cut:(C/size-((size-cut)*(m-2)))*cut;

	return (C-cut)*j;
}

bool in_array(string needle, string s[])
{
	for(int i=0;i<26;i++)
	{
		if(s[i]!="" && s[i]==needle)
		{
			return true;
		}
	}
	return false;
}

在Python里,字符串是由一系列字符组成,用单引号(')、双引号(")或者三引号(''' 或 """)来界定。以下从不同方面介绍合法字符串的定义和规则: - **界定规则**:字符串可以用单引号、双引号或者三引号来界定。单引号和双引号用于定义单行字符串,而三引号可用于定义多行字符串。例如: ```python single_quoted = 'This is a single-quoted string.' double_quoted = "This is a double-quoted string." triple_quoted = '''This is a multi-line string using triple quotes.''' ``` - **转义字符**:当需要在字符串中包含界定符本身,或者表示一些特殊字符(如换行符、制表符等)时,可使用转义字符(\)。例如: ```python escaped_single = 'He said, \'Hello!\'' escaped_newline = "This is a string with a\nnew line." ``` - **编码规则**:Python 3中的字符串默认使用 Unicode 编码,这意味着可以包含各种语言的字符和符号。例如: ```python unicode_string = "你好,世界!" ``` - **标识符相关规则**:在编程语言里,标识符是用户编程时使用的名字,对于变量、常量、函数、语句块等的命名。标识符是电脑语言中允许作为名字的有效字符串集合。不过,有一部分是关键字,不能将其用作普通标识符,否则会引发语法错误(SyntaxError 异常)[^5]。 - **字符串操作规则**:字符串属于不可变类型,不具备增、删、改等操作,切片操作会产生新的对象。例如: ```python s = 'hello,Python' s1 = s[:5] # 由于没有指定起始位置,所以从0开始切 s2 = s[6:] # 由于没有指定结束位置,所以切到字符串的最后一个元素 s3 = '!' newstr = s1 + s2 + s3 ``` - **格式化规则**:`format()`函数可用于执行字符串格式化操作。例如: ```python name = "Alice" age = 25 formatted_string = "My name is {} and I am {} years old.".format(name, age) ``` - **模板字符串规则**:模板字符串提供了PEP292中描述的更简单的字符串替换。其主要用例是国际化(i18n),因为在这种情况下,与Python中的其他内置字符串格式化工具相比,更简单的语法和功能更易于翻译。模板字符串支持基于 $ 的替换 [^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值