第八周项目3 公共字符

问题代码:

/*问题及代码 
 *Copyright(c)2016,烟台大学计算机学院 
 *All right reserved. 
 *文件名称:公共字符串.cpp 
 *作者:李玲
 *完成日期;2016年10月20日 
 *版本号;v1.0 
 * 
 *问题描述: 有两个串s1和s2,设计一个算法求一个这样的串,该串中的字符是s1和s2中公共字符。所谓公共子串,是由在s1中有, 
 且在s2中也有的字符构成的字符。例s1为”message”,s2为”agent”,得到的公共子串是”eage”。  
 
 *输入描述:两行字符串 
 *程序输出:两行字符串共同具备的字符串 
*/  
#include <stdio.h>  
#include "sqString.h"  
int main()  
{  
    SqString s1, s2, s;  
    StrAssign(s1, "message");  
    StrAssign(s2, "agent");  
    s = CommChar(s1, s2);  
    DispStr(s);  
    return 0;  
}  
#include <stdio.h>  
#include <malloc.h>  
#include "SqString.h"  
SqString CommChar(SqString s1,SqString s2)  
{  
    SqString s3;  
    int i,j,k=0;  
    for (i=0; i<s1.length; i++)  
    {  
        for (j=0; j<s2.length; j++)  
            if (s2.data[j]==s1.data[i])  
                break;  
        if (j<s2.length)            //s1.data[i]是公共字符  
        {  
            s3.data[k]=s1.data[i];  
            k++;  
        }  
    }  
    s3.length=k;  
    return s3;  
}  
  
void StrAssign(SqString &s,char cstr[]) //s为引用型参数  
{   int i;  
    for (i=0;cstr[i]!='\0';i++)  
        s.data[i]=cstr[i];  
    s.length=i;  
}  
void StrCopy(SqString &s,SqString t)    //s为引用型参数  
{   int i;  
    for (i=0;i<t.length;i++)  
        s.data[i]=t.data[i];  
    s.length=t.length;  
}  
bool StrEqual(SqString s,SqString t)  
{   bool same=true;  
    int i;  
    if (s.length!=t.length)             //长度不相等时返回0  
        same=false;  
    else  
        for (i=0;i<s.length;i++)  
            if (s.data[i]!=t.data[i])   //有一个对应字符不相同时返回0  
            {   same=false;  
                break;  
            }  
    return same;  
}  
int StrLength(SqString s)  
{  
    return s.length;  
}  
SqString Concat(SqString s,SqString t)  
{   SqString str;  
    int i;  
    str.length=s.length+t.length;  
    for (i=0;i<s.length;i++)    //将s.data[0..s.length-1]复制到str  
        str.data[i]=s.data[i];  
    for (i=0;i<t.length;i++)    //将t.data[0..t.length-1]复制到str  
        str.data[s.length+i]=t.data[i];  
    return str;  
}  
SqString SubStr(SqString s,int i,int j)  
{   SqString str;  
    int k;  
    str.length=0;  
    if (i<=0 || i>s.length || j<0 || i+j-1>s.length)  
        return str;                 //参数不正确时返回空串  
    for (k=i-1;k<i+j-1;k++)         //将s.data[i..i+j]复制到str  
        str.data[k-i+1]=s.data[k];  
    str.length=j;  
    return str;  
}  
SqString InsStr(SqString s1,int i,SqString s2)  
{   int j;  
    SqString str;  
    str.length=0;  
    if (i<=0 || i>s1.length+1)  //参数不正确时返回空串  
        return str;  
    for (j=0;j<i-1;j++)             //将s1.data[0..i-2]复制到str  
        str.data[j]=s1.data[j];  
    for (j=0;j<s2.length;j++)       //将s2.data[0..s2.length-1]复制到str  
        str.data[i+j-1]=s2.data[j];  
    for (j=i-1;j<s1.length;j++)     //将s1.data[i-1..s1.length-1]复制到str  
        str.data[s2.length+j]=s1.data[j];  
    str.length=s1.length+s2.length;  
    return str;  
}  
void Invert(SqString &s)  
{  
    int i;  
    char temp;  
    for (i=0; i<s.length/2; i++)  
    {  
        temp = s.data[i];  
        s.data[i]=s.data[s.length-i-1];  
        s.data[s.length-i-1] = temp;  
    }  
}  
void DellChar(SqString &s, char c)  
{  
    int k=0, i=0;   //k记录值等于c的字符个数  
    while(i<s.length)  
    {  
        if(s.data[i]==c)  
            k++;  
        else  
            s.data[i-k]=s.data[i];  
        i++;  
    }  
    s.length -= k;  
}  
  
SqString DelStr(SqString s,int i,int j)  
{   int k;  
    SqString str;  
    str.length=0;  
    if (i<=0 || i>s.length || i+j>s.length+1) //参数不正确时返回空串  
        return str;  
    for (k=0;k<i-1;k++)             //将s.data[0..i-2]复制到str  
        str.data[k]=s.data[k];  
    for (k=i+j-1;k<s.length;k++)    //将s.data[i+j-1..s.length-1]复制到str  
        str.data[k-j]=s.data[k];  
    str.length=s.length-j;  
    return str;  
}  
SqString RepStr(SqString s,int i,int j,SqString t)  
{   int k;  
    SqString str;  
    str.length=0;  
    if (i<=0 || i>s.length || i+j-1>s.length) //参数不正确时返回空串  
        return str;  
    for (k=0;k<i-1;k++)             //将s.data[0..i-2]复制到str  
        str.data[k]=s.data[k];  
    for (k=0;k<t.length;k++)        //将t.data[0..t.length-1]复制到str  
        str.data[i+k-1]=t.data[k];  
    for (k=i+j-1;k<s.length;k++)    //将s.data[i+j-1..s.length-1]复制到str  
        str.data[t.length+k-j]=s.data[k];  
    str.length=s.length-j+t.length;  
    return str;  
}  
void DispStr(SqString s)  
{   int i;  
    if (s.length>0)  
    {   for (i=0;i<s.length;i++)  
            printf("%c",s.data[i]);  
        printf("\n");  
    }  
}  
#define MaxSize 100             //最多的字符个数  
typedef struct  
{   char data[MaxSize];         //定义可容纳MaxSize个字符的空间  
    int length;                 //标记当前实际串长  
} SqString;  
  
void StrAssign(SqString &s,char cstr[]);    //字符串常量cstr赋给串s  
void StrCopy(SqString &s,SqString t);   //串t复制给串s  
bool StrEqual(SqString s,SqString t); //判串相等  
int StrLength(SqString s);  //求串长  
SqString Concat(SqString s,SqString t);  //串连接  
SqString SubStr(SqString s,int i,int j); //求子串  
SqString InsStr(SqString s1,int i,SqString s2); //串插入  
SqString DelStr(SqString s,int i,int j) ;   //串删去  
SqString RepStr(SqString s,int i,int j,SqString t);     //串替换  
void DispStr(SqString s);   //输出串  
  
void Invert(SqString &s);  
void DellChar(SqString &s, char c);  
SqString CommChar(SqString s1,SqString s2);


运行结果:


知识点总结:

此程序是利用两个字符串的复杂度进行运算,取出两个字符串公共的数字赋值给新的字符串变量,在求出其长度即可。

学习心得:

算法的应用

<think>好的,用户现在需要详细的环境搭建步骤,这是他们毕设项目的第一任务。用户之前已经得到了一个整体的学习路线和开发流程,现在需要更具体的指导来完成环境搭建。 首先,我需要确定用户的基础。用户是Java新手,只学过语法基础,可能对Maven、SSM框架、Tomcat等工具不太熟悉。因此,步骤需要详细且避免使用复杂术语,确保用户能一步步跟上。 用户的需求是环境搭建,包括创建Maven项目、配置依赖、设置web.xml等。可能需要详细说明每个文件的配置内容,以及如何验证配置是否正确。此外,用户可能在使用IDE(如IDEA或Eclipse)时遇到问题,所以需要提供具体的操作步骤,例如如何创建项目、添加依赖、配置Tomcat等。 接下来,我需要回忆Maven项目的基本结构,特别是Web项目的标准目录结构,比如src/main/webapp/WEB-INF/web.xml的位置,以及资源文件的存放路径。同时,要确保依赖的版本兼容,比如Spring和MyBatis的版本是否匹配,避免用户因为版本问题卡住。 另外,用户可能需要了解如何配置DispatcherServlet和字符编码过滤器,这些是Spring MVC的核心配置。要提供代码示例,并解释每个配置项的作用,比如contextConfigLocation指定Spring的配置文件路径,以及字符编码过滤器的参数设置。 还有,用户可能会忽略日志配置,导致调试困难,因此需要包含log4j的配置示例,帮助用户定位问题。同时,提醒他们在运行项目前需要配置Tomcat,并确保Maven的打包方式是war,以便正确部署。 最后,需要检查是否有遗漏的步骤,比如数据库驱动的依赖是否添加,或者是否需要在pom.xml中指定Java版本。同时,考虑用户可能的常见错误,例如依赖下载失败、项目结构不正确、Tomcat启动失败等,给出相应的解决建议,比如检查网络、Maven镜像源,或者清理Maven缓存。 总之,要确保每一步都清晰明确,代码示例正确无误,并且覆盖用户可能遇到的问题,帮助他们顺利完成环境搭建,为后续开发打下基础。</think>以下是环境搭建的**完整详细步骤**,包含每个配置文件的代码和操作说明: --- ### **第1步:创建Maven Web项目** 1. **使用IDEA创建项目**(Eclipse步骤类似) - File -> New -> Project - 选择`Maven` -> 勾选`Create from archetype` -> 选择`maven-archetype-webapp` - 输入GroupId(如`com.music`)和ArtifactId(如`music-system`) 2. **验证项目结构** ``` src/ main/ java/ --> Java源代码 resources/ --> 配置文件 webapp/ --> 前端文件 WEB-INF/ web.xml --> 核心配置文件 ``` --- ### **第2步:配置pom.xml(完整版)** ```xml <project> <!-- 基本配置 --> <modelVersion>4.0.0</modelVersion> <groupId>com.music</groupId> <artifactId>music-system</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <!-- 统一版本管理 --> <properties> <spring.version>5.3.18</spring.version> <mybatis.version>3.5.9</mybatis.version> <mybatis.spring.version>2.0.7</mybatis.spring.version> </properties> <!-- 依赖列表 --> <dependencies> <!-- Spring MVC --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- MyBatis核心 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- MyBatis-Spring整合包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- JDBC驱动(MySQL示例) --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> <!-- JSTL标签库 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 文件上传 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> </dependencies> <!-- 构建配置 --> <build> <plugins> <!-- 设置JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project> ``` --- ### **第3步:配置web.xml(完整配置)** ```xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 字符编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring MVC前端控制器 --> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` --- ### **第4步:创建Spring MVC配置文件** 在`src/main/resources`下新建`springmvc-config.xml`: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 自动扫描Controller --> <context:component-scan base-package="com.music.controller"/> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 静态资源处理 --> <mvc:default-servlet-handler/> <!-- 支持注解驱动 --> <mvc:annotation-driven/> <!-- 文件上传配置 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="10485760"/> <!-- 10MB --> </bean> </beans> ``` --- ### **第5步:验证环境** 1. **创建测试Controller** ```java package com.music.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class TestController { @GetMapping("/hello") public String hello() { return "test"; // 对应/WEB-INF/views/test.jsp } } ``` 2. **创建测试JSP** ```jsp <!-- src/main/webapp/WEB-INF/views/test.jsp --> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>测试页</title> </head> <body> <h1>环境搭建成功!</h1> </body> </html> ``` 3. **配置Tomcat** - 在IDEA中: 1. 点击右上角`Add Configuration` 2. 添加`Tomcat Server -> Local` 3. Deployment选项卡添加项目war包 4. 设置`Application context`为`/` 4. **访问测试** ``` http://localhost:8080/hello ``` --- ### **常见问题解决方案** 1. **依赖下载失败** - 检查Maven镜像源配置(推荐阿里云镜像) ```xml <!-- 在maven的settings.xml中添加 --> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> ``` 2. **404错误** - 检查视图解析器的`prefix`和`suffix`配置 - 确认JSP文件是否放在`/WEB-INF/views/`目录 3. **字符乱码** - 确保所有配置文件(web.xml)配置了UTF-8过滤 - IDEA设置:File -> Settings -> Editor -> File Encodings 全部设置为UTF-8 需要任何配置文件的完整模板或遇到具体错误,可随时提供详细错误信息,我会给出针对性解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值