小编Mik*_*ohn的帖子

如何检查字符串是否平衡?

我想测试输入字符串是否平衡.如果存在匹配的开括号,括号或括号,则会平衡.

example:
{} balanced
() balanced
[] balanced
If S is balanced so is (S)
If S and T are balanced so is ST


public static boolean isBalanced(String in)
{
    Stack st = new Stack();

    for(char chr : in.toCharArray())
    {
        if(chr == '{')
            st.push(chr);

    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

我在选择做什么时遇到了问题.我应该将每个开口或右括号,括号或括号放入堆叠中然后将它们弹出?如果我把它们弹出来,这对我有什么帮助?

java string stack balance

8
推荐指数
2
解决办法
3万
查看次数

foreach in a list [C#]

MonoBehavior[] list; // This is from Unity3d but think of it as Object, 
                     // all classes inherit from it.
Run Code Online (Sandbox Code Playgroud)

列表中包含许多内容,其中一些是Alpha,来自Alpha类,其他来自其他类.

foreach(Alpha a in list) // Alpha is a script. 
  a.doSomething();
Run Code Online (Sandbox Code Playgroud)

我假设我的foreach会以这种方式工作:在列表中找到的Foreach Alpha脚本做了一些事情,忽略了所有其他组件.

我认为这是一个铸造问题.请帮助我更好地理解cast/polymorphism.

我在执行期间遇到此错误: 无法从源类型转换为目标类型

c# polymorphism foreach casting

6
推荐指数
3
解决办法
1万
查看次数

比较C中的两个字符数组

我有一个字符串结构.

struct string
{
   char *c;
   int length;
   int maxLength;
}
Run Code Online (Sandbox Code Playgroud)

我想检查两个字符串是否相等.

所以我想运行一个for循环.

for(int i = 0; i < length; i++)
   if(s1[i] != s2[i]) // This code is more C# than C.
Run Code Online (Sandbox Code Playgroud)

s1和s2都是字符串结构.

我该怎么办if(s1[i] != s2[i])

编辑: 我刚刚做了这个,是不是杀了?

    for(i = 0; i < length; i++)
    if((*s1).c[i] != (*s2).c[i])
    {
        printf("Failed");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c

5
推荐指数
2
解决办法
6万
查看次数

找到二叉树中最长的路径

我想找到二叉树中最长的路径.我计划将它们添加到列表中,这样我就能告诉我的敌人角色在简易模式上走很长的路.

private static <T> ArrayList<T> depthFirstSearch(BinaryNode<T> node)
{
    if(node != null)
    {
        Stack<BinaryNode<T>> stack = new Stack<BinaryNode<T>>();

        stack.push(node);

        while(!stack.isEmpty())
        {
            BinaryNode<T> currentNode = stack.pop();



            if(currentNode.right != null)
                stack.push(currentNode.right);

            // We want to visit left child first, so push left node last.
            if(currentNode.left != null) 
                stack.push(currentNode.left);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我写了那段代码,但这是一团糟.我正在尝试使用DFS找到最长的路径.有什么建议?

编辑:我确实有树的高度,我可以使用它.

public static <T> int height(BinaryNode<T> t)
{
    if (t == null)
        return -1;

    else 
        return 1 + Math.max(height(t.left), height(t.right));
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我何时知道我找到了使用DFS的最长路径,以便我可以将节点添加到我的列表中?

algorithm binary-tree path nodes depth-first-search

3
推荐指数
1
解决办法
3万
查看次数

fstat返回0文件大小

我以为我理解fstat,我错了.

我需要知道文件的大小,然后从文件中读取.

fileN 具有文件的路径和文件的名称.看起来像这样.0.txt

struct stat fileStat;

FILE *fp;
int fd = 0; 


int i;
for(i = 0; i < 100; i++)
{
   fp = fopen(fileN, "r");

   fd = open(fileN, "r"); // I think this is eating my files and making them 0 size.
   fstat(fd, $fileStat);

   printf("%d", fileStat.st_size);

   fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)

为什么我需要使用fd = open(fileN, "r");使用fstat?感觉就像我打开文件两次.

如果fileStat是一个结构,为什么我使用fileStat.st_size而不是fileStat->st_size像我创建自己的结构时那样?示例:myString->characters;

为什么上面的代码在printf执行时会打印0 ?是的,文件的大小大于0,我有正确的文件名和路径.

上面的所有代码都是我对Googled代码的解释,并与我的试错实现混合在一起.这就是我有这么多问题的原因.

编辑:解决方案:open()被调用错误并影响文件.

c fstat

3
推荐指数
1
解决办法
6421
查看次数

Optarg和命令行参数

我从用户那里得到命令行参数.

然后,我为命令切换案例,例如:

    case 'f':
         *file_name = optarg;
         break;
Run Code Online (Sandbox Code Playgroud)

我不确定我是否需要malloc作为指针,因为我不完全理解optarg.

这是file_name的声明方式:

char **file_name;
Run Code Online (Sandbox Code Playgroud)

我应该这样做

int length = strlen(optarg); // This gives a warning about types when compiling.
Run Code Online (Sandbox Code Playgroud)

然后malloc为字符串长度+ 1?

如何针对这类问题完成malloc?请记住,用户输入的文件名为**argv.

编辑:这就是我调用此函数并仍然出现分段错误的方式.

int main(int argc, char **argv)
{
   char **file_name;
   parser(argc, argvm file_name);
}

void parser(int argc, char **argv, char **file_name)
{
  // Switch cases.
}
Run Code Online (Sandbox Code Playgroud)

c malloc command-line-arguments

2
推荐指数
1
解决办法
862
查看次数

F#展平功能效率比较

我试图比较这两个函数,看看哪个算法最好.我一直在关注n复杂度的顺序,虽然我不知道如何以数学方式得出它(这是一种耻辱)但我有时会猜测它的顺序.我想要知道算法是否比另一个好,我需要从渐近时间,复杂性和实验方面来看待它们.

let flatten1 xs = List.fold (@) [] xs

let flatten2 xs = List.foldBack (@) xs []
Run Code Online (Sandbox Code Playgroud)

我使用了F##time功能,这就是我得到的.

Real: 00:00:00.001, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
val it : int list =
  [1; 2; 3; 5; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19;
   20; 5; 4; 5; 6]
>
Real: 00:00:00.001, CPU: 00:00:00.000, GC gen0: 0, gen1: 0, gen2: 0
val it : int …
Run Code Online (Sandbox Code Playgroud)

complexity-theory f# time-complexity asymptotic-complexity

1
推荐指数
1
解决办法
504
查看次数

创建一个线程并将结构传递给它

我想创建n个线程.然后传递一个结构,每个结构用数据填充该结构; 例如bool来跟踪线程是否已完成或是否已终止信号.

n = 5; // For testing.

pthread_t threads[n];
for(i=0; i<n; i++)
   pthread_create(&threads[i], &thread_structs[i], &functionX);
Run Code Online (Sandbox Code Playgroud)

假设thread_structs已被malloced.

functionX()通知功能内部没有参数.我应该为结构创建一个参数吗?或者我传递结构的地方还可以吗?

我如何指向刚刚传递给函数的结构?

c pthreads

1
推荐指数
1
解决办法
183
查看次数

malloc时指针之间的区别

我通常使自己成为一个结构,并为结构分配内存,有时为结构内的缓冲区分配内存.像这样:

typedef struct A
{
  char *buffer;
  int size;
} A;
Run Code Online (Sandbox Code Playgroud)

然后当我malloc为结构时,我这样做.(我学会了不要在这里施放malloc返回.)

X

A *a = malloc(sizeof(a));
a->buffer = malloc(10*sizeof(a->buffer));
Run Code Online (Sandbox Code Playgroud)

X和Y有什么区别?

ÿ

 A *a = malloc(sizeof(*a));
 a->buffer = malloc(10*sizeof(a->buffer));
Run Code Online (Sandbox Code Playgroud)

他们似乎在做同样的事情.

c malloc pointers

0
推荐指数
1
解决办法
135
查看次数